Форум программистов, компьютерный форум, киберфорум
PHP: RegExp
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
179 / 48 / 6
Регистрация: 23.06.2011
Сообщений: 248
1

Preg_replace не работает с русским текстом и case insensetive

09.11.2016, 17:11. Просмотров 1161. Ответов 3
Метки нет (Все метки)

Здравствуйте!
Как я понял, тема известная. Гугл, в основном, выдает ссылки на темы как минимум двухлетней давности, php 5.3, 5.4. У меня php 5.6. Задача до жути простая:
Есть фраза "Общество с ограниченной ответственностью "Рога и Копыта".
Мне нужно убрать кусок "Общество с ограниченной ответственностью". Осложняется это все тем, что этот кусок может быть написан полностью большими буквами / каждое слово с большой буквы / только первое слово с большой буквы / все маленькими буквами.
Попытался навесить на него
PHP
1
preg_replace('/общество с ограниченной ответственностью/i', '', 'Общество с ограниченной ответственностью "Рога и Копыта"')
, ожидая на выходе получить строку "Рога и Копыта" - и не получил! Не работает модификатор /i. Сама по себе замена работает (проверил на нижнем регистре).
Подскажите, как быть, куда копать?
ps: Версия php5.6, пробоевал mb_ereg_replace - тоже не работает.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2016, 17:11
Ответы с готовыми решениями:

Шифровальщик по принципу регистра сдвига c линейной обратной связью не работает с русским текстом
Всем доброе время суток! Возникла следующая проблема: я написал шифровальщик по принципу регистра...

Ошибка CASE в CASE возникла при переносе в столбец с текстом, дату
Подскажите пожалуйста, при формировании второго условия возникла ошибка, как исправить? - как...

Blob с русским текстом
Всем привет! Есть csv файл, который записан в базе в blob. Нужно распарсить каждую строчку, взяв...

idhttp - работа с русским текстом
Проблема такая strRead = Http1->Get(strURL); русские буквы считываются каракулями - как их...

3
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1835 / 1335 / 596
Регистрация: 12.01.2011
Сообщений: 5,362
09.11.2016, 20:52 2
Лучший ответ Сообщение было отмечено smth как решение

Решение

Цитата Сообщение от smth Посмотреть сообщение
Подскажите, как быть, куда копать?
Нужно ставить флаг u Unicode
PHP
1
echo preg_replace("~Общество с ограниченной ответственностью~ui",'','Общество с ограниченной ответственностью "Рога и Копыта"');
1
179 / 48 / 6
Регистрация: 23.06.2011
Сообщений: 248
09.11.2016, 21:29  [ТС] 3
Azdeman, спасибо!

Я, возможно, что-то не так делал, но модификатор /u я точно ставил (точнее, /ui) - и не работало. Стер все, запустил сначала Ваш пример, потом свой - и работает. Бред какой-то. Я не закрывал файлик, сейчас долго держал ctrl+z - реально код идентичен. Комп не трогал, ходил гулял..
0
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1835 / 1335 / 596
Регистрация: 12.01.2011
Сообщений: 5,362
09.11.2016, 21:36 4
Цитата Сообщение от smth Посмотреть сообщение
ходил гулял..

Не по теме:

наверное в этом дело. Кто то там чё то подкрутил и всё заработало. :D

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2016, 21:36

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Работа с русским текстом в linux
Пишу консольное приложение в Code::Blocks на Ubuntu 15.04. Выводит он русский текст и без всяких...

Сохранение вебстраницы с русским текстом
написал код:using System; using System.Collections.Generic; using System.ComponentModel; using...

Проблема с русским текстом в форме
С некоторых пор введенный по-русски текст из формы передается в таком виде...

SELECT не находит строку с русским текстом
Есть база данных в кодировке utf8: Структура 1 id int(12) UNSIGNED Нет Нет ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.