По молчанию, на момент написания статьи в PHP отсутствует функция для замены слов в кириллическом тексте.
По этому, если вам потребовалось произвести замену строки в кодировке utf-8, то можно написать свою функцию mb_str_replace.
-
Воспользуемся функцией mb_detect_encoding для определения кодировки исходного текста, в котором будет осуществлен поиск.
Полученный результат запишем в переменную $charset.
Преобразуем текстовую строку из исходной кодировки в кодировку utf-8 с помощью функции iconv и присвоим переменной $unicodeString.
str_replace($search, $replace, $unicodeString);
Полученные строки кода заключаем в функцию и присваиваем ей название — "mb_str_replace".
Таким образом получилась функция следующего содержания:
Проверка:
Проверяем работоспособность функции.
Ищем слово "Исходный " в строке "Исходный кириллический текст для проверки" и заменяем на "".
если объяснять по-простому: проблема в разнице кодировки кода и строк,
которые приходят со стороны (db/scraping/http requests/etc).
соответственно, их нужно привести к одному знаменателю.
пример скрипта в UTF-8 и строки в WIN-1251.
s77lanselot77s: может быть все что угодно.
поднимите на локалке виртуалку с максимально приблеженным к серверу образом и тестируйте.
лично я не сталкивался с исчезновением кириллицы, только с ее неверным отображением.
Подскажите, как вы выходите из положения когда нужно вырезать какое-то кириллическое слово, букву из текста. ( str_replace не работает)
Пробовал самописные функции по типу mb_str_replace — ни одна не дала должного результата.
Пример:
Допустим у нас есть строка: $calc = "1ч20мин+1ч50мин";
И из нее нужно убрать "мин".
Или же более сложные случаи, где много спарсенного текста (начальная кодировка заранее неизвестна) и в нем нужно что-то изменить.
2 ответа 2
Если исходная кодировка заранее неизвестна и например нужно привести текст к общей кодировке utf-8.
Вы делаете что-то неправильно, функция str_replace успешно работает на данном кейсе.
mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
Если Вы хотите перевести строку в другую кодировку, воспользуйтесь функцией iconv