Поиск слова в тексте (строке) на 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 Composer – пакетный менеджер PHP. Что и как? (13.01.2022)
- 0 MySQL и PHP: Вычисление возраста (количество лет) по дате рождения (20.06.2017)
- 0 Как изменить часовой пояс на сервере (16.11.2013)
- 0 PHP: Как удалить файлы по маске? (07.11.2013)
- 0 Регулярные выражения в PHP (12.04.2014)
- 0 Защита от спама в phpBB3 без капчи (09.10.2013)
- 0 Php функция implode внутри запроса SELECT к MySQL. (02.09.2013)
- 0 Как убрать папку www из денвера? (22.03.2013)
- 0 Устанавливаем и настраиваем WampServer (аналог MAMP в Mac и возможная замена Denwer'у) на Windows (22.03.2013)
- 0 Полезные возможности PhpStorm и настройка горячих клавиш (14.03.2013)
- Оборачиваем изображения в ссылки с помощью хука add_filter('the_content', ...) в functions.php (14.08.2019)
- Добавляем форму отправки обратного звонка на сайт (по Javascript и с ReCaptcha) (29.07.2019)
- Преимущества ИТ–аутсорсинга (25.03.2019)
- Отладка PHP кода в консоли браузера (22.03.2019)
- Ошибка в phpmyadmin: count(): Parameter must be an array or an object that implements Countable (27.03.2019)
- Две или более reCaptcha на одной странице. Несколько рекапч на странице (25.02.2019)
- Оверлей кнопка на видео HTML5 video overlay play button (15.02.2019)
- Битрикс: Формирование цены - отделить пробелом тысячи от сотен (04.02.2018)
- Настраиваем красивое меню типа гамбургер на мобильных, используя плагин mmenu. На примере 1С-Битрикс (04.02.2018)
- Артефакты при ресайзе библиотекой GD изображений с однородным (белым) фоном (07.12.2017)
- Задаем область печати документа для PHPExcel (05.12.2017)
- Как включить SSL и сделать редирект на HTTPS. На примере Opencart 2 (03.12.2017)
- Смена кодировки Битрикса с windows-1251 в UTF-8 (utf8) (01.12.2017)
- Свой дизайн кнопок социальных сетей для сайта. Кнопки "Поделиться" (19.06.2017)
- Ошибка: Invalid argument supplied for foreach() in ... (09.04.2017)
