@Q_BASIC
Программист

Почему не работает регистронезависимость регулярного выражения в php?

Не работает регистронезависимость (флаг i) в регулярном выражении после переноса на новый хостинг. Кодировка windows-1251.

И текст и файл в нужной кодировке. Какой-то настройки не хватает на сервере?

$text = 'что-то написано ТЕКСТ что-то написано';
echo preg_replace('#текст#si', '', $text);
// выводит оригинальную строку из $text, ничего не вырезано


$text = 'что-то написано ТЕКСТ что-то написано';
echo preg_replace('#ТЕКСТ#si', '', $text);
// выводит строку с вырезанным ТЕКСТ.


Хоть флаг i указан, регулярка реагирует на регистр символов. Почему?
На старом хостинге всё работало. Переконвертировать в utf, вырезать текст и конвертировать обратно - не подходит. Потому что проблема вероятно появилась не в одном месте
  • Вопрос задан
  • 150 просмотров
Решения вопроса 1
@dodo512
Не работает регистронезависимость (флаг i) в регулярном выражении после переноса на новый хостинг. Кодировка windows-1251.

Это регулируется настройками локали https://www.php.net/manual/ru/function.setlocale.php
setlocale(LC_CTYPE, 'ru_RU.CP1251');
https://sandbox.onlinephpfunctions.com?s=s7EvyCjg5...
Но не факт что на новом сервере есть в наличии нужная локаль.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sotvm
@sotvm
Умный поймёт, а дураку и так всё равно.
по моему -v
или это из bash. ???
в пыхе есть подобное
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы