Выделение поискового запроса в запросе? - PullRequest
0 голосов
/ 07 ноября 2011

У меня проблемы с выделением поискового запроса в запросе. Если пользователь ищет «Иисус», все стихи, содержащие «Иисус», будут перечислены и разбиты на страницы. Я хочу выделить поисковый запрос во всех этих отрывках.

Допустим, я ищу «Иисус», и появляется около 10 стихов, я хочу, чтобы все экземпляры Иисуса на каждой странице были выделены.

Мой код PHP:

индекс: http://pastebin.com/vTdy79er
Библейская база данных: http://www.mediafire.com/?00x4fnbn1vr4nch

Понятия не имею, как это сделать.

мой оператор выбора для моих запросов:

$searchResult = $dbLink->prepare("SELECT   bsect, bname, bnum, cnum, vnum, vtext,                                             MATCH    (bname, vtext)
AGAINST  ('$searchQuery' IN BOOLEAN MODE)
AS       relevance
FROM     kjv
WHERE    MATCH (bname, vtext)
AGAINST  ('$searchQuery' IN BOOLEAN MODE)
ORDER BY relevance
DESC
$limit"); 

Код, который на самом деле отображает мои результаты (имя главы из Библии: номер стиха, а затем текст стиха:

while ($searchResult->fetch())
{
print ("<span class=\"results title\">$bname $cnum:$vnum</span>");
print ("<p class=\"passage\">$vtext</p>");
}

Ответы [ 3 ]

1 голос
/ 07 ноября 2011

Я полагаю, что вы уже делаете это здесь:

$output = str_replace($_GET[phrase],"<font color=red>" . $_GET[phrase] . "</font>",$output);

, даже если бы я предложил изменить код следующим образом:

$output = str_replace($_GET['phrase'],'<font color="red">'.$_GET['phrase'].'</font>',$output);

или даже лучше, используйте <span>тег и класс, а затем назначьте весь CSS, который вы хотите, этому классу и упростите его изменение в будущем

EDIT / ADD

с вашим последнимобновленное сообщение, это то, что вы должны сделать (если я правильно понимаю ваш код)

print ("<p class=\"passage\">$vtext</p>");

изменить его на (при условии, что $searchQuery - это переменная, содержащая эту строку, которая ищется

echo '<p class="passage">'.(str_replace($searchQuery, '<font color="red">'.$searchQuery.'</font>', $vtext).'</p>';

Мне также больше нравится эхо, чем печать, но это личное предпочтение. Конечно, вы должны избегать " и использовать ', когда это возможно, так как это ускорит PHP, так как движку не придетсяпроанализировать всю строку, чтобы найти переменные .. но опять же, личные предпочтения

0 голосов
/ 07 ноября 2011

Я не смотрел на ваш код, но что-то вроде этого должно работать:

echo str_replace($searchWord, '<span class="highlight">' . $searchWord . '</span>', $row['verse']);
0 голосов
/ 07 ноября 2011

Попробуйте это.

jQuery SearchHighlight плагин.Демонстрация и реализация предоставляются.

...