|
|
|
| Есть:
$text = ''Здесь у нас текст. Какой-то текст из базы данных, или из файла в котором будем искать слово"
и
$word="базы"
Надо:
$result="Какой-то текст из базы данных, или из файла "
что б выводил с начала предложения (или 50 символов до слова "базы") , в котором содерждится искомое слово, (допусьтим) 300 символов. | |
|
|
|
|
|
|
|
для: BArt Simpson
(07.11.2005 в 14:17)
| | Разбиваем текст по разделителю "точка" (.)
$phrases=explode($text,".");
|
В цикле проверяем каждое:
foreach ($phrases as $num => $one_phrase)
{
if (strpos($one_phrase, $word) != 0)
{
$target=$num;
break;
}
}
|
Применяем к найденному предложению вот эту функцию:
function first_words($text, $end_point)
{
if ($end_point >= strlen($text)) return $text;
while (true)
{
$tmp_text=substr($text, 0, $end_point+1);
if ($tmp_text[$end_point] != ' ')
$end_point++;
else
break;
if ($end_point == strlen($text)) return $text;
}
return $tmp_text.' ...';
}
|
То есть, вместе:
<?php
function first_words($text, $end_point)
{
if ($end_point >= strlen($text)) return $text;
while (true)
{
$tmp_text=substr($text, 0, $end_point+1);
if ($tmp_text[$end_point] != ' ')
$end_point++;
else
break;
if ($end_point == strlen($text)) return $text;
}
return $tmp_text.' ...';
}
$phrases=explode($text,".");
foreach ($phrases as $num => $one_phrase)
{
if (strpos($one_phrase, $word) != 0)
{
$target=$num;
break;
}
}
echo first_words($text, 300);
?>
|
| |
|
|
|
|
|
|
|
для: BArt Simpson
(07.11.2005 в 14:17)
| | Можно попытаться извлечь фразу при помощи регулярных выражений
<?php
$text = "Здесь у нас текст. Какой-то текст из базы данных, или из файла в котором будем искать слово";
$pattern = "|\.(.*базы([\s]+[-\w,\.!\?_:]+){4}[\s])|iU";
preg_match($pattern,$text,$out);
echo $out[1];
?>
|
| |
|
|
|