stripos возвращает false, когда используются специальные символы - PullRequest
6 голосов
/ 30 марта 2011

Я использую функцию stripos , чтобы проверить, находится ли строка внутри другой строки, игнорируя любые случаи.

Вот проблема:

stripos("ø", "Ø")

возвращает ложьВ то время как

stripos("Ø", "Ø")

возвращает true.

Как вы можете заметить, похоже, что функция NOT выполняет поиск без учета регистра в этом случае.

Функция имеет те же проблемы с такими символами, как Ææ и Åå.Это датские персонажи.

Ответы [ 4 ]

9 голосов
/ 30 марта 2011

Используйте взамен mb_stripos(). Он поддерживает набор символов и будет обрабатывать многобайтовые наборы символов. stripos () - это пережиток старых добрых времен, когда существовал только ASCII, а все символы имели только 1 байт.

3 голосов
/ 30 марта 2011

Вам нужно mb_stripos .

1 голос
/ 15 июня 2015

Как говорят другие решения, попробуйте сначала с помощью mb_stripos ().Но если использование этой функции не помогает, проверьте кодировку вашего php-файла.Преобразуйте его в UTF-8 и сохраните. Это помогло мне после нескольких часов исследований.

1 голос
/ 30 марта 2011

mb_stripos позаботится об этом.

...