【问题标题】:PHP function to adapt texte not working with special characters?PHP函数适应texte不使用特殊字符?
【发布时间】:2020-11-28 05:57:11
【问题描述】:

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

            $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 应该防止所有特殊字符被误读。 我尝试了不同的选择,但我仍然弄错了。 我希望该函数适用于所有重音类型。

有什么想法吗?

非常感谢来自法国!

【问题讨论】:

    标签: php mbstring


    【解决方案1】:

    您需要为文件设置 utf-8 编码。试着把它放在顶部:

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

    然后,不要使用$str[0],而是使用mb_substr($str, 0, 1)

    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);
    

    【讨论】:

    • 你刚刚在 Facebook 帖子上查看了答案吗哈哈?不错!
    【解决方案2】:

    mbstring 中使用的默认国家语言设置 (NLS)。注意这个选项会自动定义 mbstring.internal_encoding 并且 mbstring.internal_encoding 应该放在 php.ini 中的 mbstring.language 之后

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

    【讨论】:

      猜你喜欢
      • 2017-07-14
      • 1970-01-01
      • 2014-08-09
      • 2016-03-03
      • 1970-01-01
      • 1970-01-01
      • 2019-08-02
      • 2016-09-13
      • 2019-09-17
      相关资源
      最近更新 更多