Как сделать попроще? Вытащить теги из фразы.

Статус
В этой теме нельзя размещать новые ответы.

virtualbrest

Полезный
Регистрация
6 Май 2007
Сообщения
210
Реакции
18
Подскажите плиз простое решение следующей задачи:

Есть текстовая фраза, из нее надо вытащить ключевые слова, но не слишком много, и не слишком короткие. В идеале, что бы чем длиннее фраза, тем более длинные слова вытаскивало.

К примеру:

C 11 по 20 марта Госавтоинспекция и УП Белтехосмотр проводит общереспубликанскую декаду Гостехосмотр. Госавтоинспекция

Вытащить должно:

марта Госавтоинспекция Белтехосмотр проводит общереспубликанскую декаду Гостехосмотр

Как бы ничего сложного, но надо учесть что встречаются всякие разные символы, которые не нужны - тире, точки и т.д., тоесть надо оставить английские и русские буквы, остальное убрать. Цифры тоже можно убрать. Ну и не забыть про длинну слов, она полюбому не может быть менше 3 симоволов. Если возможно, то что бы если в фразе более 5 слов, то удаляло все, что меньше 4 символов.
И самое пожалуй главное! Не должно быть повторяющихся слов :)
 
Вы это все одной регуляркой хотите сделать? Или реализация не важна, главное - результат?
 
на php
PHP:
<?php
$text="C 11 по 20 марта Госавтоинспекция и УП Белтехосмотр проводит общереспубликанскую декаду Гостехосмотр. Госавтоинспекция";
$count=count(explode(" ",$text));
if($count>5)
  preg_match_all("/([a-z,A-Z,а-я,А-Я]{3,100})/",$text,$res);
else
  preg_match_all("/([a-z,A-Z,а-я,А-Я]{4,100})/",$text,$res);
$res=array_unique($res[1]);
foreach($res as $t){
echo $t;
}
?>
 
Вы это все одной регуляркой хотите сделать? Или реализация не важна, главное - результат?

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

Спасибо, код что тут приведен имено то, что надо.
 
Уточню, по условию задачи:

не
PHP:
if($count>5)
а
PHP:
if($count<5)
надо для приведенного выше кода.

и походу вопрос... запяты не вырезает, если они стоят вприлипку к слову, а они ессно так и стоят. Остальное вроде бы все вырезает, то что надо. Как можно и от запятых избавиться?
 
Убрать их из символного класса, естесно. Вместо [a-z,A-Z,а-я,А-Я] - [a-zA-Zа-яА-Я]
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху