Разбить текст на предложения. Регулярку не могу наприсать.

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

jabbaxatt

Добрый модератор
Регистрация
21 Янв 2009
Сообщения
902
Реакции
432
Нужно разбить произвольный текст на предложения и вывести их в столбик. Текст есть просто текст, от всех HTML тегов уже очищен.

Простенький вариант :
PHP:
$pattern = "~[^\.?!]+~";
preg_match_all($pattern, $mytext, $matches);
 
// далее тупо вывод в столбик
$matches=$matches[0];
if (is_array($matches))
      for ($i = 0; $i < count($matches); $i++)
          echo $matches[$i].'<br>';

Ошибается на случаях типа:
А теперь про сайт www. site.ru расскажем немного.
Сегодня 12.12.2012 число.
Губернатор В.А.Опоросов прибыл на заседание!

Желательно что-бы он ещё и последний знак,по котором разделяем не резал.
 
Как вариант прогнать текст через филтра (правила) которые бы поставили маркеры (к примеру [DOT]) в место символов разделения предложений в тех местах где предложение бить не надо. Потом спокойно побить на предложения, и потом заменить уже маркеры на символы.
 
Пока остановился на варианте:

PHP:
preg_match_all("/.*?[.?!](?:\s|$)/s", $html,$matches);

Отлично выделил предложения:

А теперь про сайт Для просмотра ссылки Войди или Зарегистрируйся расскажем немного.
Сегодня 12.12.2012 число??!
Губернатор В.А.Опоросов прибыл на заседание!

Но не понимает предложение
Губернатор В. А. Опоросов прибыл на заседание!

Впрочем, большего видимо регулярками не добиться.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху