1

我正在尝试遍历包含法语字符的字符串。我有一组要匹配的特定法语字符。

例子:

header("Content-Type: text/html;charset=utf-8");
$string = "HÂPPY Ç" ;
echo $string;//displays correctly
echo "<br>";
$frenchArray = Array('Â','Ç');
for($i=0;$i<mb_strlen($string);$i++)
{
    $t = utf8_encode(mb_substr($string,$i,1));
    echo "Checking:" . $t . "<br>";
    for($x=0;$x<count( $frenchArray);$x++)
    {
        if($t==$frenchArray[$x])
        {
            echo "Matched: " . $t . " to " . $frenchArray[$x]."<br>";
        }
    }
}

这给了我没有匹配:

Checking:H
Checking:Ã
Checking:
Checking:P
Checking:P
Checking:Y
Checking:
Checking:Ã
Checking:

我注意到“检查:”中的字符显示不正确

似乎我在这里缺少一些简单的东西,感谢您的帮助!

4

1 回答 1

1

好像我错过了“mb_”的“,'UTF-8'”部分。感谢您链接到文章卢克。

正确的代码应该是:

for($i=0;$i<mb_strlen($string,'UTF-8');$i++)
{
    $t = mb_substr($string,$i,1,'UTF-8');
    echo "Checking:" . $t. "<br>";
    for($x=0;$x<count( $frenchArray);$x++)
    {
        if(preg_match('/'.$t.'/',$frenchArray[$x]))
        {
            echo "Matched: " . $t . " to " . $frenchArray[$x]."<br>";
        }
    }
}
于 2016-12-13T17:19:16.917 回答