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

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

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

 

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

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

тема: работа с текстом
 
 автор: BArt Simpson   (07.11.2005 в 14:17)   письмо автору
 
 

Есть:
$text = ''Здесь у нас текст. Какой-то текст из базы данных, или из файла в котором будем искать слово"

и

$word="базы"

Надо:

$result="Какой-то текст из базы данных, или из файла "

что б выводил с начала предложения (или 50 символов до слова "базы") , в котором содерждится искомое слово, (допусьтим) 300 символов.

   
 
 автор: Киналь   (07.11.2005 в 18:51)   письмо автору
 
   для: 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($text0$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($text300);
?>

   
 
 автор: cheops   (07.11.2005 в 19:42)   письмо автору
 
   для: BArt Simpson   (07.11.2005 в 14:17)
 

Можно попытаться извлечь фразу при помощи регулярных выражений
<?php
  $text 
"Здесь у нас текст. Какой-то текст из базы данных, или из файла в котором будем искать слово";
  
$pattern "|\.(.*базы([\s]+[-\w,\.!\?_:]+){4}[\s])|iU";
  
preg_match($pattern,$text,$out);
  echo 
$out[1];
?>

   
Rambler's Top100
вверх

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