|
|
|
| Добрый день!
Вопрос достаточно прост и поставлен в теме поста. Нужно выделить первое предложение в строке и занести её в переменную $pretext.
<?php
$text="Первое предложение. Второе.";
$pretext= # ???
?>
|
| |
|
|
|
|
|
|
|
для: CjEcho
(24.08.2009 в 14:42)
| |
<?php
$text="Первое предложение. Второе.";
$arr = explode(".", $text);
$pretext = $arr[0];
?>
|
Но если в предлжоении будут использоваться сокращении - скрипт поймет сокращение с точкой как конец предложения. | |
|
|
|
|
|
|
|
для: neadekvat
(24.08.2009 в 14:46)
| | Ну а зачем порождать массив, если можно взять часть строки? | |
|
|
|
|
|
|
|
для: neadekvat
(24.08.2009 в 14:46)
| | А если предположить, что предложения заканчиваются при наличии точки и идущего за ним пробела, а сокращения без пробела.
Наприм.это первое. Это второе предложение.
Либо анализировать регистр следующего символа, идущего после "._", где _-пробел.
Возможно ли это? | |
|
|
|
|
|
|
|
для: CjEcho
(24.08.2009 в 15:12)
| | с моим вариантом возможно анализировать всё что угодно вплоть до символов верхнего и нижнего регистра после точки с пробелом.
вариант neadekvat , грубо говоря не вариант. | |
|
|
|
|
|
|
|
для: 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;
?>
|
| |
|
|
|
|
|
|
|
для: Valick
(24.08.2009 в 15:08)
| | Да, этот вариант намного гибче, но как было сказано ранее у него возникнут проблемы с пониманием сокращений. Может быть добить его уже до конца, чтобы закрыть эту тему? | |
|
|
|
|
|
|
|
для: CjEcho
(24.08.2009 в 15:24)
| | добивайте ;) | |
|
|
|
|
|
|
|
для: Valick
(24.08.2009 в 15:30)
| | Спасибо и на этом! :) | |
|
|
|
|
|
|
|
для: CjEcho
(24.08.2009 в 15:37)
| | IMHO даже регулярным выражением нельзя всегда безошибочно определить
предлжение было до точки или не предложение.
предложение может начинаться и с цифры
, а инициалы могут быть разделены и точкой с пробелом | |
|
|
|