проблема с strpos() поиском строки с 'ç'

может кто-нибудь помочь мне с этой проблемой?

Я использовал file_get_contents(), чтобы получить весь текст из файла.

в файле есть слово Reparaç.

strpos() не может найти Reparaç

если я ищу Repara, он находит его, поэтому проблема связана с ç

если я повторяю file_get_contents(), ç отображается нормально

если я записываю информацию file_get_contents() в другой файл, вместо ç появляется странный символ

я действительно устал делать что-то и искать, чтобы попытаться исправить это, и, вероятно, это что-то простое, с чем люди, которые привыкли делать php-код, довольно привыкли иметь дело, но я не могу понять, что с этим не так

кстати, на многих сайтах, которые я видел, казалось, что кодировка может быть актуальна для проблем такого рода, я использую UTF-8


person wxiiir    schedule 29.08.2011    source источник


Ответы (2)


Попробуйте использовать mb_strpos()

person Slava Semushin    schedule 29.08.2011
comment
mb_strpos() не работает, file_get_contents() может искажать ç, когда возвращает текст файла в виде строки - person wxiiir; 29.08.2011
comment
@wxiiir Проверьте этот файл в кодировке UTF-8, а если нет, преобразуйте его в UTF-8 с помощью iconv() - person Slava Semushin; 29.08.2011
comment
@php-coder, спасибо, что сказали мне проверить, что файл был в кодировке utf-8, по какой-то странной причине файл, из которого file_get_contents() получал информацию. это должно было быть utf-8, на самом деле было windows-1252, поэтому оно никогда не могло работать. Я всегда выбираю свои файлы в формате utf-8, поэтому я, вероятно, не заметил, что на этот раз выбрал его неправильно. strpos и mb_strpos теперь работают хорошо. благодарю вас - person wxiiir; 29.08.2011
comment
@tttony не пробовал этот метод, потому что я сначала решил проблему и не использовал дополнительный код, как-то я напутал при выборе кодировки файла. Спасибо за ваш ответ - person wxiiir; 29.08.2011
comment
@wxiiir Я знаю, что у вас возникла проблема, поэтому я рекомендую вам utf8_decode() содержимое, но лучше изменить кодировку файла на UTF-8. - person tttony; 29.08.2011

Вместо этого используйте mb_strpos(), который поддерживает многобайтность — strpos предназначен для старой школы ASCII и не будет работать со строками Unicode.

person Marc B    schedule 29.08.2011
comment
mb_strpos() не работает, как вы сказали, он поддерживает многобайтность, но file_get_contents() может испортить ç, когда возвращает текст файла в виде строки, и поэтому я снова столкнулся с проблемой - person wxiiir; 29.08.2011