PHP 调整文本不适用于特殊字符的功能?

PHP function to adapt texte not working with special characters?

我正在努力使用根据字符串的第一个字母调整文本的函数。

            $str = "élo";

            function deD($str) { 
            return (in_array(mb_strtolower($str[0]), array('a', 'e', 'é', 'è', 'ê', 'h', 'i', 'o', 'u')) ? 'd\'' : 'de ').$str;
            }
            
            echo deD($str).'</br>';
            echo $str[0];

输出: 德埃洛 �

预期输出: 德洛 é

基本上,mb_strtolower应该可以防止所有特殊字符被误读。 我尝试了不同的选择,但我仍然弄错了。 我希望该函数适用于所有重音类型。

有什么想法吗?

非常感谢来自法国!

您需要为文件设置utf-8编码。尝试将其放在顶部:

header('Content-type: text/html; charset=utf-8');

然后,使用 mb_substr($str, 0, 1)

而不是 $str[0]
function deD($str) {
    return (in_array(mb_strtolower(mb_substr($str, 0, 1)), array('a', 'e', 'é', 'è', 'ê', 'h', 'i', 'o', 'u')) ? 'd\'' : 'de ').$str;
}

$str = 'élo';

echo deD($str).'<br>';
echo mb_substr($str, 0, 1);

mbstring 中使用的默认国家语言设置 (NLS)。请注意,此选项会自动定义 mbstring.internal_encoding,并且 mbstring.internal_encoding 应放在 php.ini

中的 mbstring.language 之后

https://www.php.net/manual/en/mbstring.configuration.php