Я оочень "крут" в регулярках) решил начать разбираться Нужно вырезать в строке упоминание об "области" ) причем, оно может быть с точкой, запятой (если она есть, ее надо оставить) ну и собственно как в начале так и где угодно вообще Мой великий гений родил вот такой патерн: Код (Text): #\Wобл\W# По-моему чего-то не хватает) по крайней мере, сохранить запятые не получается =)
флоппик у меня смешнее было=) а если какой-нить "кадобл" будет ) Вы мне обрежете пол-слова) а Код (Text): [.]+ классный замут) чет не допер) не.. и куски типа "затрапезная обл," не обрабатываются
что бы не ставить \ перед точкой. Но я и сам в регулярках несилен. На работе нашел в пятницу кусок: `split('/[,]/', $this->getRequest()->getParam('foo'))`. Создал тикет, дескать что ж вы творите-то, сволочи?). И что вы думаете? Позаменяли split на preg_split и все! Клоуны блин.
Mr.M.I.T. наверное, все отлично =) я в вас нисколько не сомневаюсь... Вот только, mАтb 3r0, utf-8 Код (Text): Unknown modifier '�' Код (Text): mb_internal_encoding("UTF-8"); mb_regex_encoding('UTF-8'); что еще можно придумать? конвертить в 1251 или латин?
что в утф? паттерн? читай про модификатор u если с ним такие проблемы, может его вообще не использовать?
Mr.M.I.T. ставил и убирал модификатор. ничего не меняется не вариант весь проект переделывать. Проще одну костылину воткнуть, - дождаться 6го пхп Вот только что придумать Код (Text): var_dump(preg_replace("(?:(?<=[^\w])|^)обл(?:(?=[^\w])|$)u", "", "обл Волгодонская обл., областной, обл, кадобл.,"));
а теперь ясно. читай про ограничители Код (Text): var_dump(preg_replace("#(?:(?<=[^\w])|^)обл(?:(?=[^\w])|$)#iu", "", "обл Волгодонская обл., областной, обл, кадобл.,"));
Прогнался ) Но Немного не то) Областной и кадобл он должен был оставить) \w и \W как-то не сильно работают (если не латиница).. надо что-то придумать
Код (Text): setlocale(LC_ALL, 'ru_RU.UTF8'); mb_internal_encoding("UTF-8"); mb_regex_encoding('UTF-8'); осталось только найти как определить любой символ образующий слово в utf-8 и заменить им \w =)
Код (Text): var_dump(preg_replace("#(?:(?<=[^\w])|^)обл(?:(?=[^\w])|$)#i", "", "обл Волгодонская обл., областной, обл, кадобл.,")); Код (Text): var_dump(preg_replace("#(?:(?<=[^a-z0-9а-я_])|^)обл(?:(?=[^a-z0-9а-я_])|$)#iu", "", "обл Волгодонская обл., областной, обл, кадобл.,"));
дважды финт ушами по перекодировке туда/сюда и все работает Mr.M.I.T., спасибо за патерн, низкий поклон =)
Mr.M.I.T. Да. Работает. Не понятно, почему u+ \w не работают. Если убрать модификатор u то все отлично... чудеса какие-то Код (Text): 'обл Волгодонская обл., областной, обл, кадобл, => Волгодонская ., областной, , кадобл,' и если "обл." то "." надо тоже убрать =)
Mr.M.I.T., спасибо еще раз мде.. это если у меня существует куча кучная адресных сокращений для каждого адреса это мне надо их все вместо "обл" втыкнуть