У меня есть PHP-скрипт, который выполняет поиск в моей базе данных на основе условий, помещенных в поле поиска на веб-сайте. Это возвращает блок текста. Предположим, что мой поисковый запрос на данный момент составляет "test block"
. Пример моего результата был бы этот блок текста:Динамическая вставка текста в строку (PHP)
Это тестовый блок текста, который был собран из базы данных, используя поисковый запрос.
Теперь мой вопрос: как я могу «изюминка» термин поиск в блоке текста, чтобы пользователь мог понять, почему этот результат был разобран в первую очередь. Используя приведенный выше пример, что-то вроде следующего будет достаточно:
Это испытательный блок текста, который был собран из базы данных из поискового запроса.
Я пробовал несколько вещей до сих пор, что изменит текст, но настоящая проблема, с которой я столкнулся, связана с чувствительностью к регистру. Например, если бы я использовал код:
$exploded = explode(' ', $search_terms);
foreach($exploded as $word) {
// I have to use str_ireplace so the word is actually found
$result = str_ireplace($word, '<b>' . $word . '</b>', $result);
}
Он будет идти через мой $result
и bold
любой инстанции слов. Это выглядело бы правильно, как хотелось бы в моем втором примере результата поиска. Но, в том случае, когда пользователь использует "Test Block"
вместо "test block"
термины поиска будут капитализированы и выглядеть так:
Это тест Блок текста, который был собран из базы данных из поиска запрос.
Это не работает для меня, особенно если пользователь использует условия поиска в нижнем регистре, и они попадают в начало отклика.
По сути, то, что мне нужно сделать, это найти слово в строке, вставьте текст (<b>
в данном примере) непосредственно перед словом, а затем вставить текст непосредственно после слова (</b>
в данном примере), сохраняя при этом само слово от замены. Это правила preg_replace
и str_replace
Я верю, поэтому я действительно зациклен на том, что делать.
Любые провода были бы оценены.
вы можете использовать preg_replace() с помощью $ 1 в запасной части, которая представляет согласованный параметр. http://php.net/manual/en/function.preg-replace.php см. комментарий от anyvie at devlibre dot fr – Waygood
@Waygood Спасибо за это, указывает на меня в правильном направлении. Я думаю, что я просто не понимал 'preg_quote()' достаточно либо. – burmat