Обрезание строки вокруг слова ?

bora

Guest
Обрезание строки вокруг слова ?

Такая ситуация есть текст к примру
«очень длинный текст BLACK очень длинный текст»

Как сделать так чтобы было «…ный текст BLACK очень дли…» то есть обрезать строку по обе стороны конкретно слова к примеру BLACK на определенное количество символов скажем 10 ?


Если можно готовое решение… а то туговато с ПХП.. :)
 

bora

Guest
Это я читал но все равно не понял…

А если слово BLACK заранее известно как $slovo ?
 

neko

tеam neko
ясно

иди читай в этом форуме тред "научите меня программированью в php"
 

bora

Guest
Понятно спасибо… ;-(

-~{}~ 22.12.04 02:18:

Короче такая тема несколько искомых слов… нужно обрезать по сторонам и представить это все одним текстом…

Вот я нахимичил оно то работает только текст вокруг слова одинаковый… что я пропустил ?


Получается так…

...ный текст BLACK очень длинный текст......ный текст BLACK очень длинный текст...

А должно…

...ный текст BLACK очень длинный текст...... я мля еще BLACK раз мля очень длинн...

Код:
<?


$text = "очень длинный текст <b>BLACK</b> очень длинный текст труляля ируляля мля еще <b>BLACK</b> раз мля очень длинный текст труляля ируляля мля конец";
preg_match_all("/<b>(.*)<\/b>/siU", $text, $found);


for ($i=0; $i< count($found[0]); $i++) {


$needle = $found[0][$i];
$position = strpos($text, $needle);

$sub_str = '...'.substr($text, ($position-10), ($position+strlen($needle)+10)).'...';

echo $sub_str;

}


?>
 

rotoZOOM

ACM maniac
Функция strpos выдает ПЕРВОЕ вхождение искомой строки в заданную. Всегда.

Если править твой код, то надо примерно так:

PHP:
$last=0;
for ($i=0; $i< count($found[0]); $i++) {


$needle = $found[0][$i];
$position = strpos($text, $needle,$last);

$sub_str = '...'.substr($text, ($position-10), ($position+strlen($needle)+10)).'...';
$last=$position+strlen($needle)+10;

echo $sub_str;

}
 

SiMM

Новичок
Автор оригинала: rotoZOOM
Функция strpos выдает ПЕРВОЕ вхождение искомой строки в заданную. Всегда.
Или false. И вообще эти излишества со strpos тут ни к чему ([m]preg_match_all[/m])
PHP:
preg_match_all("/<b>.*<\/b>/siU", $text, $found,PREG_OFFSET_CAPTURE);
 

bora

Guest
Спасибо… вроде работает… это я для поисковика делаю интерфейс.
 
Сверху