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

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

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

 

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

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

тема: вырезать из текста предложение?
 
 автор: P@Sol   (16.09.2005 в 15:45)   письмо автору
 
 

из текста надо вырезать предложение..как это можно сделать?
делал так:
$p = split("\.",$text);

но это способ и г. Москва разбивает на два предложения

   
 
 автор: Artem S.   (16.09.2005 в 16:09)   письмо автору
 
   для: P@Sol   (16.09.2005 в 15:45)
 

А что для вас "предложение"?
> но это способ и г. Москва разбивает на два предложения
Боюсь, что другого не остается, кроме как мириться с этим. Компьютер не возможно научить понимать где закончена мысль, а где нет =)

   
 
 автор: P@Sol   (16.09.2005 в 17:08)   письмо автору
 
   для: Artem S.   (16.09.2005 в 16:09)
 

предложение это группа слов начинающееся со слова, которое написано с большой буквы и заканчивающее точкой.
но веть что то типа [а-я]{4,}\. - можно придумать...

   
 
 автор: Artem S.   (16.09.2005 в 17:20)   письмо автору
 
   для: P@Sol   (16.09.2005 в 17:08)
 

Проблема же не только в точке.

> которое написано с большой буквы
А цифры, перечисление(1., 2.), прямая речь?
> заканчивающее точкой.
а как же "!" "?"
еще надо учитывать смайлы.
год можно писать как 2005г.
Таких примеров очень много и все их учитывать, конечно, можно, но рационально ли это.

Другими словами, лично я, не вижу как можно по простому "объяснить" компьютеру, где заканчивается одно, и где начинается следующее предложение.

   
 
 автор: P@Sol[не вошел]   (16.09.2005 в 18:38)
 
   для: Artem S.   (16.09.2005 в 17:20)
 

хорошо, тогда вопросы в следующем...
1. как из новости выбрать одно предложение для анонса?

   
 
 автор: P@Sol[не вошел]   (16.09.2005 в 18:39)
 
   для: Artem S.   (16.09.2005 в 17:20)
 

яндекс же как то это сделал

   
 
 автор: cheops   (16.09.2005 в 19:49)   письмо автору
 
   для: P@Sol[не вошел]   (16.09.2005 в 18:39)
 

Ну у него же частую обрывки фраз... А зачем вам ровно одно пердложение? Возьмите первые 10-20 слов и добавьте троеточие?

   
 
 автор: P@Sol   (19.09.2005 в 14:16)   письмо автору
 
   для: cheops   (16.09.2005 в 19:49)
 

мне надо из середины:) можно и 10 слов..а как это сделать7

   
 
 автор: cheops   (19.09.2005 в 19:30)   письмо автору
 
   для: P@Sol   (19.09.2005 в 14:16)
 

Хорошо если вы приведёте текст из которого нужно вырезать и текст, а ещё лучше критерии по которым нужно вырезать блок текста...

   
 
 автор: P@Sol   (21.09.2005 в 09:32)   письмо автору
 
   для: cheops   (19.09.2005 в 19:30)
 

текст может быть любым, вот для примера:

Уважаемый пользователь!<br><br>
Вы успешно установили систему.
<br><br>
Вы можете ознакомиться с базовыми возможностями системы на примерах демо-сайтов, представленных на данной странице. В каждом макете дизайна вы сможете найти коментарии наших разработчиков. Также, для ознакомления с процессом создания сайта на системе, предлагаем посмотреть <a target=_blank href=>экскурсию</a>. 
<br><br>
Обновленные версии <a target=_blank href=>руководства пользователя и разработчика</a>, интересные <a target=_blank href=>советы и приемы</a>, а также <a target=_blank href=>форум поддержки пользователей</a> представлены на сайте.<br><br>
Для входа в режим администрирования, используйте ссылку <a href=/admin/>/admin/</a> (логин и пароль по умолчанию указаны в документации).

а надо из этого текста показать только предложение, допустим со словом "макет" (В каждом макете дизайна вы сможете найти коментарии наших разработчиков. ).

   
 
 автор: cheops   (21.09.2005 в 11:39)   письмо автору
 
   для: P@Sol   (21.09.2005 в 09:32)
 

Ну можно так поступить
<?php
  $text 
'Уважаемый пользователь!<br><br> 
Вы успешно установили систему. 
<br><br> 
Вы можете ознакомиться с базовыми возможностями системы на примерах демо-сайтов, представленных на данной странице. В каждом макете дизайна вы сможете найти коментарии наших разработчиков. Также, для ознакомления с процессом создания сайта на системе, предлагаем посмотреть <a target=_blank href=>экскурсию</a>. 
<br><br> 
Обновленные версии <a target=_blank href=>руководства пользователя и разработчика</a>, интересные <a target=_blank href=>советы и приемы</a>, а также <a target=_blank href=>форум поддержки пользователей</a> представлены на сайте.<br><br> 
Для входа в режим администрирования, используйте ссылку <a href=/admin/>/admin/</a> (логин и пароль по умолчанию указаны в документации).'
;
  
preg_match_all("|\.([^\.]+макет[^\.]+)\.|i",$text,$out);
  echo 
$out[1][0];
?>


PS А... или точкни у нас год обрезают?

   
 
 автор: P@Sol   (21.09.2005 в 11:45)   письмо автору
 
   для: cheops   (21.09.2005 в 11:39)
 

поясните пожалуйста preg_match_all()...

   
 
 автор: cheops   (21.09.2005 в 11:52)   письмо автору
 
   для: P@Sol   (21.09.2005 в 11:45)
 

Это функция поиска соответствия регулярного выражения в строке http://www.softtime.ru/dic/id_dic=136&id_group=3. В отличие от preg_match() ищет все вхождения. Первый параметр - само регулярное выражение, второй параметр - текст в котором ищется соответсвие, а через третий параметр функция возвращает результат в виде массива.

   
 
 автор: P@Sol   (21.09.2005 в 13:12)   письмо автору
 
   для: cheops   (21.09.2005 в 11:52)
 

не правильно спросил:) поясните само регулярное выражение

мы ищем все кроме точки повторяющееся более 1 раза + макет + все кроме точки повторяющееся более 1 раза и все это ищется от точки до точки...правильно я понял?

а для чего | и i?

   
 
 автор: cheops   (21.09.2005 в 23:27)   письмо автору
 
   для: P@Sol   (21.09.2005 в 13:12)
 

Да мы ищем фразу между двумя точками, в которой присутствует слово "макет". Символ | - является границей регулярныйх выражения, вы можете заменить эти символы на любой / или #. Модификатор i сообщает, что регулярное выражение не должно зависить от регистра.

   
 
 автор: Loki   (22.09.2005 в 09:55)   письмо автору
 
   для: P@Sol   (21.09.2005 в 13:12)
 

Мне кажется, логичнее было бы искать не мужду точками, а между точками с пробелами: в этом случае не будут курочится даты... правда, по прежнему будут неправильно обрабатываться сокращения.

   
 
 автор: P@Sol   (22.09.2005 в 14:36)   письмо автору
 
   для: Loki   (22.09.2005 в 09:55)
 

я много раз задавал вопрос...как в регулярных выражениях обозначается пробел?

   
 
 автор: cheops   (22.09.2005 в 14:41)   письмо автору
 
   для: P@Sol   (22.09.2005 в 14:36)
 

Пробелом, пробел в регулярном выражении - это пробел. Можно использоваться обобщённый класс пробельных символов (пробел, табуляция, первод строки, конец файла и т.п.), который обозначается последовательностью \s

   
 
 автор: P@Sol   (22.09.2005 в 15:12)   письмо автору
 
   для: cheops   (22.09.2005 в 14:41)
 

оставил только

                                                   preg_match_all("|([^\.]+".$slovo."[^\.]+)|i",$text,$out);

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

   
 
 автор: P@Sol   (07.10.2005 в 16:23)   письмо автору
 
   для: P@Sol   (16.09.2005 в 15:45)
 

что то работает не так:( ЭКГ - все верно, ВР - все верно, ЭКГ ВР (ЭКГ и ВР) - не работает:(
тест
в первых 7 пунктах нет описания

Добавлено
см. http://www.softtime.ru/forum/read.php?id_forum=6&id_theme=7875&page=1
----------------------

а как сделать "слово"+еще 3 слова

   
 
 автор: cheops   (07.10.2005 в 22:51)   письмо автору
 
   для: P@Sol   (07.10.2005 в 16:23)
 

Нужны исходные тексты... так сложно сказать...

   
 
 автор: P@Sol   (12.10.2005 в 14:56)   письмо автору
 
   для: cheops   (07.10.2005 в 22:51)
 

исходный текст есть в постах выше

может можно как то еще?

это у меня для поиска....выводить просто заголовок - не информативно....предложения - уж слишком много вариантов...не получается вырезать правильно...не вырезать - страница текста - многовато:(

   
Rambler's Top100
вверх

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