Массив PHP содержит не работает на нескольких языках

$string = 'operating-system';
$array = array('operating-system');
$i = contains($array, $string);
echo ($i) ? "found ($i)" : "not found";

Этот код напечатан выше найдено (1)

$string = '운영체제';
$array = array('운영체제');
$i = contains($array, $string);
echo ($i) ? "found ($i)" : "not found";

Но этот код печатает не найдено. Зачем?

Я обновил charset = utf-8

function contains($needles, $haystack) {
return count(array_intersect($needles, explode(" ", preg_replace("/[^A-Za-z0-9' -]/", "", $haystack))));
}

0

Решение

Вам нужна встроенная функция, которая поддерживает многобайтовые символы. Вместо preg_replace, ты можешь использовать mb_ereg_replace.

function contains($needles, $haystack) {
return count(array_intersect($needles, explode(" ", mb_ereg_replace("/[^A-Za-z0-9' -]/", "", $haystack))));
}

Вы также можете проверить документы для всех многобайтовых строковых функций.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]