From 784327fa53c0e40a76be949f0f7479a4aa6702cd Mon Sep 17 00:00:00 2001 From: "pmoreno.rodriguez" Date: Thu, 16 Jan 2025 21:00:22 +0100 Subject: [PATCH] Transliterate filter for Grav --- .../Common/Twig/Extension/GravExtension.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/system/src/Grav/Common/Twig/Extension/GravExtension.php b/system/src/Grav/Common/Twig/Extension/GravExtension.php index 9a8eeb22e..ff28469f7 100644 --- a/system/src/Grav/Common/Twig/Extension/GravExtension.php +++ b/system/src/Grav/Common/Twig/Extension/GravExtension.php @@ -149,6 +149,7 @@ public function getFilters(): array new TwigFilter('yaml_decode', [$this, 'yamlDecodeFilter']), new TwigFilter('nicecron', [$this, 'niceCronFilter']), new TwigFilter('replace_last', [$this, 'replaceLastFilter']), + new TwigFilter('transliterate', [$this, 'transliterateFilter']), // Translations new TwigFilter('t', [$this, 'translate'], ['needs_environment' => true]), @@ -578,6 +579,22 @@ public function replaceLastFilter($str, $search, $replace) return $str; } + /** + * transliterateFilter + * + * Transliterate is a Grav filter that converts accented characters to their ASCII equivalents. + * For example, 'Ä' will become 'A'. + * + * @param mixed $str + * @return void + */ + public function transliterateFilter($str) + { + $str = iconv('UTF-8', 'ASCII//TRANSLIT', $str); + $str = preg_replace('/[^A-Za-z0-9 \-_]/', '', $str); + return $str; + } + /** * Get Cron object for a crontab 'at' format *