通过带有法语字符和匹配的字符串进行迭代

时间:2016-12-13 17:06:07

标签: php utf-8 french

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

示例:

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:

我注意到&#34;检查:&#34;

中的字符显示不正确

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

1 个答案:

答案 0 :(得分:0)

好像我错过了&#34;,&#39; UTF-8&#39;&#34; &#34; mb _&#34;的一部分。感谢您链接到Luke文章。

正确的代码应该是:

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>";
        }
    }
}