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

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

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

 

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

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

тема: 10 слов до, и 10 после
 
 автор: Borbosso   (30.03.2006 в 21:12)   письмо автору
 
 

Ребята, как осуществить следущее:
Имеется текст, из него нужно выдернуть одно слово, и ещё 10 слов до и после этого слова.
Заранее спасибо.

   
 
 автор: Trianon   (30.03.2006 в 21:19)   письмо автору
 
   для: Borbosso   (30.03.2006 в 21:12)
 

пример?

   
 
 автор: cheops   (30.03.2006 в 22:13)   письмо автору
 
   для: Borbosso   (30.03.2006 в 21:12)
 

Следует поступить примерно следующим образом
<?php
  $text 
"Ребята, как осуществить следущее:
Имеется текст, из него нужно выдернуть одно слово, и ещё 10 слов до и после этого слова.
Заранее спасибо. Ребята, как осуществить следущее:
Имеется текст, из него нужно выдернуть одно слово, и ещё 10 слов до и после этого слова.
Заранее спасибо."
;
  
$pattern "|([\s]+[^\s]+){10}[\s]+нужно[\s]+([^\s]+[\s]+){10}|";
  
preg_match($pattern,$text,$out);
  echo 
"...".$out[0]."...";
?>

   
 
 автор: Artemy   (06.04.2006 в 10:51)   письмо автору
 
   для: cheops   (30.03.2006 в 22:13)
 

Другой вариант. Работает намного быстрей.
<?PHP
  
function cutText($str,$content,$padText){
    
$a strpos($content,$str)-$padText;
    
$b strlen($str)+2*$padText;
    
$cutStr substr($content,$a,$b);
    for(
$i=$a;$i>$a-20;--$i){
      
$char=substr($content,$i-1,1);
      
$cutStr $char.$cutStr;
      if(
$char == " " || $char == "," || $char == "." || $char == "!" || $char == "?" || $char == ":" || $char == ";"){
        if(
substr($content,$i-2,1) != ""$cutStr '...'.$cutStr;
        break;
      }
    }
    for(
$i=$a+$b;$i<$a+$b+20;$i++){
      
$char=substr($content,$i,1);
      
$cutStr.=$char;
      if(
$char == " " || $char == "," || $char == "." || $char == "!" || $char == "?" || $char == ":" || $char == ";"){
        if(
substr($content,$i+1,1) != ""$cutStr.=" ...";
        break;
      }
    }
    return 
$cutStr;
  }

$text "Ребята, как осуществить следущее: 
Имеется текст, из него нужно выдернуть одно слово, и ещё 10 слов до и после этого слова. 
Заранее спасибо. Ребята, как осуществить следущее: 
Имеется текст, из него нужно выдернуть одно слово, и ещё 10 слов до и после этого слова. 
Заранее спасибо."


  print 
cutText('нужно',$text,50)
?>

   
 
 автор: Artemy   (06.04.2006 в 11:00)   письмо автору
 
   для: cheops   (30.03.2006 в 22:13)
 

Игорь Вячеславович, а как будет выглядеть рег. выражение, если нужно будеть окружить не слово, а словочитание? Т.е. вместо "нужно" "нужно выдернуть одно".

И еще один вопрос.
Как в тексте выделить слово или фразу тэгом <b></b> до ближайщих пробелов?
Пример: кусок строки "кратно описа", нужно выделить так "<b>неоднократно описано</b>"!
В литературе неоднократно описано, как поток трансформирует адронный гидродинамический удар в том случае, когда процессы переизлучения спонтанны. Возмущение плотности синфазно. Частица неверифицируемо сжимает экзотермический атом, однозначно свидетельствуя о неустойчивости процесса в целом. В ряде недавних экспериментов квант выталкивает ультрафиолетовый магнит независимо от расстояния до горизонта событий. В литературе неоднократно описано, как жидкость экстремально индуцирует циркулирующий экситон в том случае, когда процессы переизлучения спонтанны.

   
 
 автор: cheops   (06.04.2006 в 13:07)   письмо автору
 
   для: Artemy   (06.04.2006 в 11:00)
 

Да также, просто вместо "нужно", следует подставить "нужно выдернуть одно", только если применяется регулярное выражение желательно словосочетание прогнать через функцию preg_quote(), чтобы экранировать спец-символы.

   
 
 автор: Artemy   (06.04.2006 в 13:12)   письмо автору
 
   для: cheops   (06.04.2006 в 13:07)
 

Я так пробовал, результат - пустота!

А по-поводу второго вопроса?

   
Rambler's Top100
вверх

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