winsom
@winsom
так себе

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

Привет кодирам помогите плиз
Требуется вывести часть текста вокруг искомого слова, а не выводить весь текст из базы данных .
Выглядит так:
5f9d598f68992322856523.jpeg
Нашел в сети этот код, то что надо! но не могу понять как внедрить его в страницу поиска :(
/**
 *
 * @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);
}

Код который выводит по заданному слову только начало статьи из бд content
Даже если искать слово которое в конце статьи, всё равно выводить начало статьи!
$content=NULL;
$contentArray=explode(" ",$row_searchResultsSample['content']);
$fileCount=0;
if(is_array($contentArray)){
        foreach ($contentArray as $key) { 
        $fileCount++;
                if($fileCount<32){
                        
                        $LowerStr=strtoupper($key);
                        $LowersearcTerm=strtoupper($searcTerm);
                        if(strpos($LowerStr,$LowersearcTerm)!== false){
                                $keyWard="<strong style=\" text-decoration:underline;\">$key</strong>";
                        }else{
                                $keyWard=$key;
                        }
                $content.=$keyWard." ";
                }
        }
}

return $content;
}

Помогите плиз
  • Вопрос задан
  • 509 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы