|
|
|
| Собственно задача такая.
Есть массив строк: ("Путин", "Единая Россия");
Нужно в тексте найти слова из массива в оригинале, а так же с разными окончаниями, например: "Путин", "ПутинСКИЙ", "ЕдинО РоссиЙСКИЙ" и т.д., и повесить на них ссылку.
причем, слова типа "Распутин", где содержится часть ключевого слова - попадать "под нож" не должны.
Как найти просто слова и повесить ссылку - разобрался, но вот с окончаниями никак заладить немогу.
Что надо использовать: ereg- или preg_match? И как их настроить правильно? | |
|
|
|
|
|
|
|
для: Zilog
(22.02.2008 в 02:14)
| | спецыыыы!! поможите :)
никак не могу понять эти каракули, которыми шаблон для preg_match задают!!!.. | |
|
|
|
|
|
|
|
для: Zilog
(22.02.2008 в 02:14)
| | >Как найти просто слова и повесить ссылку - разобрался, но вот с окончаниями никак заладить немогу.
Просто так в лоб устроить морфологический анализ русского языка?
Шутим? | |
|
|
|
|
|
|
|
для: Trianon
(22.02.2008 в 11:08)
| | >>Как найти просто слова и повесить ссылку - разобрался, но вот с окончаниями никак заладить немогу.
>
>Просто так в лоб устроить морфологический анализ русского языка?
>Шутим?
:) Нельзя, скажем, шаблон задаить таким образом: "Путин%", где % - обозначает, что у слова может быть любое окончание?
Я почитал описание preg_match, в чстности про использование неких квантификаторов и т.д.
(http://phpclub.ru/detail/article/regexp_1?printVersion=1), и как понимаю, это возможно сделать.
Просто сходу немоуг осилить весь тот набор возможностей по заданию шаблона, и вычленить нужные мне символы - уж больно много там чего непонятного.
Добавлено:
В моём варианте ещё такой глюк есть - например, если шаблон "Путин", то обрабатывается и слово "Путиноид", которого в базе шаблонов нет. Т.е. ereg_match (сейчас замену делаю именно этим опреатором, т.к. с preg_match не разобрался) ищет не слова, как хотелось бы, а вообще вхождение строки в любое из слов. | |
|
|
|
|
|
|
|
для: Zilog
(22.02.2008 в 11:19)
| | \b(Путин(а|у|е|ым|))\b
слова Путинский я не знаю. По-моему это фамилия , свершенно не относящаяся к В.В. | |
|
|
|
|
|
|
|
для: Trianon
(22.02.2008 в 11:30)
| | >\b(Путин(а|у|е|ым|))\b
>
>слова Путинский я не знаю. По-моему это фамилия , свершенно не относящаяся к В.В.
Ну, президента я использовал только в качестве примера, как и партию :) - ночью сходу больше ничего в голову не пришло.
А вопрос такой. Прописать окончания - это хорошо, но при большой базе - это адская работа. Нельзя задать правило, что после корня "Путин" может быть любое окончание?
Судя по той ссылке, что я привел - мне кажется это возможно, всё дело в "квантификаторах"...? | |
|
|
|
|
|
|
|
для: Zilog
(22.02.2008 в 11:34)
| | Народ, спасайте, уже всю голову сломал в модификаторах и квантификаторах... | |
|
|
|
|
|
|
|
для: Zilog
(22.02.2008 в 15:46)
| | Причем тут квантификаторы? :)
Если хотите, чтобы пропускалось любое окончание, то чем вам тогда "оид" не нравится?
А "Владимиром Путиной" подойдет?
Trianon показал, что можно сделать... | |
|
|
|
|
|
|
|
для: kasmanaft
(22.02.2008 в 16:11)
| | >Причем тут квантификаторы? :)
>Если хотите, чтобы пропускалось любое окончание, то чем вам тогда "оид" не нравится?
>А "Владимиром Путиной" подойдет?
>Trianon показал, что можно сделать...
слов очень много, если все окончания прописывать - проще застрелиться.
А суть такая:
$text = "Путиноид, Путин мутин, путин, Путин, Распутин, Путинский, РасПутинский, Распутинский";
из этой строки мне надо вычленить слова:
"Путиноид, Путин, путин, Путинский", при этом, забив в базу только слово "Путин" - это возможно (не прописывая окончаний)?
И ещё вопрос: как мне пропускать слова, которые заключены в теги? | |
|
|
|
|
|
|
|
для: Zilog
(22.02.2008 в 16:45)
| |
$text = "Путиноид, Путин мутин, путин, Путин, Распутин, Путинский, РасПутинский, Распутинский";
echo preg_replace('/\bПутин/i', '<a href="#$0">$0</a>', $text);
|
| |
|
|
|