Поиск слова в тексте (строке) на php и вывод части текста вокруг искомого слова

Поиск слова в тексте (строке) на php и вывод части текста вокруг искомого слова Иногда требуется вывести часть текста вокруг искомого слова, а не выводить весь текст из базы данных

Вот функция которая выводит текст со словом поиска (&word) по тексту ($data) заданной длины ($interval)

/**
 *
 * @param string $data строка в которой ищем
 * @param string $word что ищем
 * @param integer $interval интервал символов до и символов после
 * @param bool $ci нечувствителен к регистру по умолчанию true
 * @return string|false результат, если false - нет вхождения
 */
function strchop($data,$word,$interval,$ci=true)
{
    //if($ci){$position=stripos($data,$word);}else{$position = strpos($data,$word);};
    $position = $ci?mb_stripos($data,$word):mb_strpos($data,$word);
    //ничего нет - вернули false
    if(!$position) return false;
    //Определяем стартовую позицию новой строки
    $start_position = $position - $interval;
    //От конца слова определили конечный интервал
    $end_position = $position + mb_strlen($word) + $interval;
    //Если стартовая позиция отрицательная делаем в 0
    if($start_position < 0) $start_position = 0;
    //определяем длину новой строки 
    $len = $end_position - $start_position;
    $length = (mb_strlen($data) > $len) ? mb_strripos(mb_substr($data, 0, $len), ' ') : $len;
    //вернули результат
    $kusok = '...'.mb_substr($data,$start_position,$length, 'UTF-8').'...';
    return str_replace($word, "<span class=\"word\">".$word."</span>", $kusok);
}


Результат можно посмотреть, например, здесь - Рубрика учим слова в песнях - слово fracaso.

almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.

Вы можете почитать все статьи от almix'а.



Другие статьи по этой теме:

Комментарии (0)     Подпишитесь на RSS комментариев к этой статье.