PHP-函数突然出现特殊字符错误

PHP-Function suddently has errors with special characters

背景

我目前正在测试开发一个小网站。 我创建的一个一直运行良好的小函数突然造成了一些麻烦。 我已经发现它与特殊字符有关。

系统

问题

    public function slugify(string $value) : string {

        // for testing:
        $value = "<TEST1/>";   // <-- no error
        $value = "<TEST1/ß>";  // <-- ERROR
        $value = "<TEST1/ä>";  // <-- ERROR
        $value = "<TEST1/ö>";  // <-- ERROR

        dump($value);

        $value = strtolower($value);    // small letters

        $replaceArray = [
            ">" => "",
            "<" => "",
            " " => "-",
            "/" => "-",
            "ß" => "ss",
            "ä" => "ae",
            "ö" => "oe",
            "ü" => "ue",

        ];
        foreach ($replaceArray as $from => $to) {
            $value = str_replace($from, $to, $value);
        }

        dump($value);

        return $value;
    }

错误消息

An exception has been thrown during the rendering of a template ("Parameter "name" 
for route "app_welcome_index" must match "[^/]++" ("test1-�" given) to generate a 
corresponding URL.").

问题

也许我的 Homebrew-Webserver (apache/httpd) 已经被 apple 的标准版本取代了?!?!但我不知道如何验证这一点。 或者任何其他想法可能发生了什么?

干杯 蒂姆

正如我在上面的评论中提到的,在处理多字节字符时,您应该使用 PHP 中存在的 mb_* 前缀函数。我们还可以稍微清理和简化代码,通过在一行中一次性完成所有工作 - 无需迭代替换数组,因为 str_replace() 可以处理替换 key/value 的数组对。

public function slugify(string $value) : string 
{
    $replaceArray = [
       ">" => "",
       "<" => "",
       " " => "-",
       "/" => "-",
       "ß" => "ss",
       "ä" => "ae",
       "ö" => "oe",
       "ü" => "ue",
    ];
    $value = str_replace(array_keys($replaceArray), $replaceArray, mb_strtolower($value));
    return $value;
}