Я пытаюсь перебрать строку, содержащую французские символы. У меня есть массив специфических французских символов, которые я ищу, и которым я хочу соответствовать.
Пример:
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:
Я заметил, что символы не отображаются правильно в «Проверка:»
Кажется, что-то простое, что я здесь упускаю, любая помощь приветствуется!
Похоже, я пропустил «, ‘UTF-8′» часть «mb_». Спасибо за ссылку на статью Люка.
Правильный код должен быть:
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>";
}
}
}
Других решений пока нет …