Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Поиск и замена строк. ereg- и preg_match - как настроить правильно?
 
 автор: Zilog   (22.02.2008 в 02:14)   письмо автору
 
 

Собственно задача такая.

Есть массив строк: ("Путин", "Единая Россия");

Нужно в тексте найти слова из массива в оригинале, а так же с разными окончаниями, например: "Путин", "ПутинСКИЙ", "ЕдинО РоссиЙСКИЙ" и т.д., и повесить на них ссылку.

причем, слова типа "Распутин", где содержится часть ключевого слова - попадать "под нож" не должны.

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

Что надо использовать: ereg- или preg_match? И как их настроить правильно?

   
 
 автор: Zilog   (22.02.2008 в 11:04)   письмо автору
 
   для: Zilog   (22.02.2008 в 02:14)
 

спецыыыы!! поможите :)
никак не могу понять эти каракули, которыми шаблон для preg_match задают!!!..

   
 
 автор: Trianon   (22.02.2008 в 11:08)   письмо автору
 
   для: Zilog   (22.02.2008 в 02:14)
 

>Как найти просто слова и повесить ссылку - разобрался, но вот с окончаниями никак заладить немогу.

Просто так в лоб устроить морфологический анализ русского языка?
Шутим?

   
 
 автор: Zilog   (22.02.2008 в 11:19)   письмо автору
 
   для: Trianon   (22.02.2008 в 11:08)
 

>>Как найти просто слова и повесить ссылку - разобрался, но вот с окончаниями никак заладить немогу.
>
>Просто так в лоб устроить морфологический анализ русского языка?
>Шутим?

:) Нельзя, скажем, шаблон задаить таким образом: "Путин%", где % - обозначает, что у слова может быть любое окончание?

Я почитал описание preg_match, в чстности про использование неких квантификаторов и т.д.
(http://phpclub.ru/detail/article/regexp_1?printVersion=1), и как понимаю, это возможно сделать.
Просто сходу немоуг осилить весь тот набор возможностей по заданию шаблона, и вычленить нужные мне символы - уж больно много там чего непонятного.

Добавлено:

В моём варианте ещё такой глюк есть - например, если шаблон "Путин", то обрабатывается и слово "Путиноид", которого в базе шаблонов нет. Т.е. ereg_match (сейчас замену делаю именно этим опреатором, т.к. с preg_match не разобрался) ищет не слова, как хотелось бы, а вообще вхождение строки в любое из слов.

   
 
 автор: Trianon   (22.02.2008 в 11:30)   письмо автору
 
   для: Zilog   (22.02.2008 в 11:19)
 

\b(Путин(а|у|е|ым|))\b

слова Путинский я не знаю. По-моему это фамилия , свершенно не относящаяся к В.В.

   
 
 автор: Zilog   (22.02.2008 в 11:34)   письмо автору
 
   для: Trianon   (22.02.2008 в 11:30)
 

>\b(Путин(а|у|е|ым|))\b
>
>слова Путинский я не знаю. По-моему это фамилия , свершенно не относящаяся к В.В.

Ну, президента я использовал только в качестве примера, как и партию :) - ночью сходу больше ничего в голову не пришло.

А вопрос такой. Прописать окончания - это хорошо, но при большой базе - это адская работа. Нельзя задать правило, что после корня "Путин" может быть любое окончание?

Судя по той ссылке, что я привел - мне кажется это возможно, всё дело в "квантификаторах"...?

   
 
 автор: Zilog   (22.02.2008 в 15:46)   письмо автору
 
   для: Zilog   (22.02.2008 в 11:34)
 

Народ, спасайте, уже всю голову сломал в модификаторах и квантификаторах...

   
 
 автор: kasmanaft   (22.02.2008 в 16:11)   письмо автору
 
   для: Zilog   (22.02.2008 в 15:46)
 

Причем тут квантификаторы? :)

Если хотите, чтобы пропускалось любое окончание, то чем вам тогда "оид" не нравится?
А "Владимиром Путиной" подойдет?

Trianon показал, что можно сделать...

   
 
 автор: Zilog   (22.02.2008 в 16:45)   письмо автору
 
   для: kasmanaft   (22.02.2008 в 16:11)
 

>Причем тут квантификаторы? :)
>Если хотите, чтобы пропускалось любое окончание, то чем вам тогда "оид" не нравится?
>А "Владимиром Путиной" подойдет?
>Trianon показал, что можно сделать...

слов очень много, если все окончания прописывать - проще застрелиться.

А суть такая:
$text = "Путиноид, Путин мутин, путин, Путин, Распутин, Путинский, РасПутинский, Распутинский";

из этой строки мне надо вычленить слова:
"Путиноид, Путин, путин, Путинский", при этом, забив в базу только слово "Путин" - это возможно (не прописывая окончаний)?


И ещё вопрос: как мне пропускать слова, которые заключены в теги?

   
 
 автор: HaJIuBauKa   (11.03.2008 в 15:41)   письмо автору
 
   для: Zilog   (22.02.2008 в 16:45)
 

$text = "Путиноид, Путин мутин, путин, Путин, Распутин, Путинский, РасПутинский, Распутинский";
echo preg_replace('/\bПутин/i', '<a href="#$0">$0</a>', $text);

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования