Код (Text): function maxsite_str_word($text, $counttext = 10, $sep = ' ') { $words = split($sep, $text); if ( count($words) > $counttext ) $text = join($sep, array_slice($words, 0, $counttext)); return $text; } ктонибуть можеьт эту рабочую корректную функию модернизировать так, чтобы она удаляла слова не с первого продела (0) а с определённого слова, притом удаляло например 10 слов спереди и сзади слова.... ПЛЗ!
Я готов заплатить если не смогу найти... Но не много, денег мало... Если пару людей не скажут ещё, то Заплачу.
PHP: <?php header('Content-type: text/plain; charset=utf-8'); function search_words($text, $substr, $words_before, $words_after) { preg_match_all('%((?:\S+\s+){0,'.(int)$words_before.'}\b'.preg_quote($substr, '%').'\b(?:\s+\S+){0,'.(int)$words_after.'})%i', $text, $matches, PREG_PATTERN_ORDER); return $matches[1]; } $text = 'мне нужно чтобы ... это для поиска, мне нужно точбы оно выводило не весь найденый текст (он может быть большым) а только например 100 символов перед тем словом что я ищу и 200 после, притом разделяло по пробелам, чтобы слова не обрезало, и не искало в html коде (типо <a href=\'www.test\' оно найдёт тогда слово test и выведет ссылку, но мне этого не надо...)... переменная $text = "результат, тоетсь может быть большой текст"; переменная где задаётся искуемое слово это $_GET(\'show\')'; foreach (search_words($text, 'это', 2, 4) as $str) echo $str."\n"; ?>
Спасибо! Только нашёл баг... если слово встречается более 1 раза то результат выводит 2 раза... ну вот что вышло: PHP: foreach (search_words($text, 'это', 1, 1) as $str) echo $str."\n"; Код (Text): ... это для слово это $_GET('show') Впринцепе это и не баг, но щас попытаюсь немного изменить чтобы если слово встречается более 1 раза, то чтобы оно добавляло "...<br>..." СПС!