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

Форум PHP

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

 

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

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

тема: Помогите выделить из текстовой строки первое предложение.
 
 автор: CjEcho   (24.08.2009 в 14:42)   письмо автору
 
 

Добрый день!

Вопрос достаточно прост и поставлен в теме поста. Нужно выделить первое предложение в строке и занести её в переменную $pretext.


<?php
$text
="Первое предложение. Второе.";
$pretext=                       # ???
?>

  Ответить  
 
 автор: neadekvat   (24.08.2009 в 14:46)   письмо автору
 
   для: CjEcho   (24.08.2009 в 14:42)
 

<?php 
$text
="Первое предложение. Второе.";
$arr explode("."$text);
$pretext $arr[0];
?>

Но если в предлжоении будут использоваться сокращении - скрипт поймет сокращение с точкой как конец предложения.

  Ответить  
 
 автор: sim5   (24.08.2009 в 14:47)   письмо автору
 
   для: neadekvat   (24.08.2009 в 14:46)
 

Ну а зачем порождать массив, если можно взять часть строки?

  Ответить  
 
 автор: CjEcho   (24.08.2009 в 15:12)   письмо автору
 
   для: neadekvat   (24.08.2009 в 14:46)
 

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

Наприм.это первое. Это второе предложение.

Либо анализировать регистр следующего символа, идущего после "._", где _-пробел.

Возможно ли это?

  Ответить  
 
 автор: Valick   (24.08.2009 в 15:19)   письмо автору
 
   для: CjEcho   (24.08.2009 в 15:12)
 

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

  Ответить  
 
 автор: Valick   (24.08.2009 в 15:08)   письмо автору
 
   для: CjEcho   (24.08.2009 в 14:42)
 

<?php
$text
="Первое предложение. Второе.";
for (
$i=0$i<strlen($text); $i++){
    
// условие определения конца предложения (может быть более сложным)
    
if ($text[$i]=="." || $text[$i]=="!" || $text[$i]=="?") {
    
$pretext .= $text[$i]; break;
    }
$pretext .= $text[$i];
}
echo 
$pretext;
?>

  Ответить  
 
 автор: CjEcho   (24.08.2009 в 15:24)   письмо автору
 
   для: Valick   (24.08.2009 в 15:08)
 

Да, этот вариант намного гибче, но как было сказано ранее у него возникнут проблемы с пониманием сокращений. Может быть добить его уже до конца, чтобы закрыть эту тему?

  Ответить  
 
 автор: Valick   (24.08.2009 в 15:30)   письмо автору
 
   для: CjEcho   (24.08.2009 в 15:24)
 

добивайте ;)

  Ответить  
 
 автор: CjEcho   (24.08.2009 в 15:37)   письмо автору
 
   для: Valick   (24.08.2009 в 15:30)
 

Спасибо и на этом! :)

  Ответить  
 
 автор: heed   (24.08.2009 в 18:55)   письмо автору
 
   для: CjEcho   (24.08.2009 в 15:37)
 

IMHO даже регулярным выражением нельзя всегда безошибочно определить
предлжение было до точки или не предложение.
предложение может начинаться и с цифры
, а инициалы могут быть разделены и точкой с пробелом

  Ответить  
Rambler's Top100
вверх

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