(☞ຈل͜ຈ)☞ Главная  Статьи  Загрузчик Домой

Ok!
Ok!
150
function find_wrap($string, $search){
    $out = "";
    $pos = 0;
    if(strpos(" " . $string, $search) > 0){
        $in = str_replace($search, "<b>".$search."</b>", strip_tags($string));
        $wordToFind = $search;
        $numWordsBefore = 3;
        $numWordsAfter = 10;


        $words = preg_split('/s+/', $in);
        $found_words    =   preg_grep("/^".$wordToFind.".*/", $words);
        $found_pos      =   array_keys($found_words);
        if(count($found_pos))
        {
            $pos = $found_pos[0];
        }
        if (isset($pos)) {
            $start = ($pos - $numWordsBefore > 0) ? $pos - $numWordsBefore : 0;
            $length = (($pos + ($numWordsAfter + 1) < count($words)) ? $pos + ($numWordsAfter + 1) : count($words) - 1) - $start;
            $slice = array_slice($words, $start, $length);
            $pre_start  =   ($start > 0) ? "...":"";
            $post_end   =   ($pos + ($numWordsAfter + 1) < count($words)) ? "...":"";
            $out = $pre_start.implode(' ', $slice).$post_end;
        }
    }
    return $out;
}
wrap, фраза текста, поиск0Возвращает искомое слово из текста плюс 3 слова до и 10 слов после
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21