$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))));
}
Вам нужна встроенная функция, которая поддерживает многобайтовые символы. Вместо preg_replace
, ты можешь использовать mb_ereg_replace.
function contains($needles, $haystack) {
return count(array_intersect($needles, explode(" ", mb_ereg_replace("/[^A-Za-z0-9' -]/", "", $haystack))));
}
Вы также можете проверить документы для всех многобайтовых строковых функций.
Других решений пока нет …