mettre en évidence plusieurs mots clés dans la recherche
je suis en utilisant ce code pour mettre en valeur les mots clés de recherche:
function highlightWords($string, $word)
{
$string = str_replace($word, "<span class='highlight'>".$word."</span>", $string);
/*** return the highlighted string ***/
return $string;
}
....
$cQuote = highlightWords(htmlspecialchars($row['cQuotes']), $search_result);
toutefois, cela met en évidence un seul mot-clé. si l'utilisateur saisit plus d'un mot-clé, il permettra de réduire la recherche, mais aucun mot n'est mis en évidence. comment puis-je mettre plus d'un mot?
Je suis passé à JavaScript pour la recherche syntaxique. Le problème est, qui recherche les valeurs dans les attributs (ou d'une recherche, par exemple, pour
<div
) briser le balisage sans un travail soigné. En JS c'est un 20-liner garanti sans effets secondaires.OriginalL'auteur input | 2010-05-03
Vous devez vous connecter pour publier un commentaire.
des expressions régulières est le chemin à parcourir!
Pour correspondre dans une casse, ajouter un " i " à l'expression régulière
NB: pour les non-anglais lettres comme "ä" les résultats peuvent varier selon les paramètres régionaux.
comment puis-je faire en cas de sensible? si l'utilisateur tape dans du "bien", il n'affiche que les "bons" et pas "Bonne".
merci. dernière question: si l'utilisateur tape "bon", il affichera tous les résultats mettant en évidence le mot "bon". cependant, il ne mettent pas en évidence de "bonnes" du mot "bonté" bien que cela apparaîtra dans la suite.
Comment puis-je ajuster à travailler avec des caractères non anglais ET de mettre en évidence jusqu'à 1 caractère de mots-clés?
Mais comment pouvez-vous mettre en évidence à la fois
mä
etma
mots? Comment voulez-vous faire être en utf-8 indépendant?OriginalL'auteur user187291
PHP > 5.3.0, essayez preg_filter()
C'est mieux que l'on a accepté la réponse, le code est court et les bonnes œuvres.
Super! Comment voulez-vous permet de rechercher à la fois des lettres comme celle-ci:
e
eté
? Comment puis-je spécifier pour utiliser UTF-8 pour que les deux lettres sont considérés comme pour être mis en avant?essayez d'ajouter
mb_internal_encoding('UTF-8');
avant la preg_*, et ajouteru
modificateur:preg_filter('/' . preg_quote($words) . '/iu', ...
OriginalL'auteur goldsky
En supposant que les mots sont entrés comme un espace séparé de la chaîne, vous pouvez utiliser exploser
Bien que si vous voulez vous assurer qu'il n'y a pas d'espaces multiples, vous pouvez les supprimer à partir de la chaîne première
Que vous ne devez générer un remplacement de tableau
Puis
Afin de le mettre en collaboration
solution parfaite pour moi.. avec un peu de changement.. merci beaucoup monsieur
OriginalL'auteur Yacoby
ici est une fonction simple pour mettre en évidence seulement de comparer le texte.
fonction d'appel d'
OriginalL'auteur asi_x
Mettre en évidence plusieurs mots clés dans la recherche, y compris les trémas
J'ai utilisé les regex écrit avant et remplacé
\w
avec[A-Za-z0-9_äöüÄÖÜ]
. Comme vous le voyez, j'ai ajouté les accentsäöüÄÖÜ
.J'ai aussi enlevé le
\b
de sorte qu'il correspond à tout aspect de la recherche.Exemple
terme de recherche:
Su shamp
texte:
Soleil brillant shampooing
résultat:
Sun brillante shampoo
Le code que j'ai utilisé:
OriginalL'auteur Heffa Fuzzel
comme suggéré par user187291, il suffit de changer de code suivant pour obtenir le texte en surbrillance avec fond jaune.
OriginalL'auteur Fou
Partage votre requête de recherche en mots, puis mettez en surbrillance chaque mot séparément.
Il pourrait mieux fonctionner pour effectuer la mise en évidence en javascript. de jQuery de type "contient" sélecteur va probablement aider à éviter les problèmes de remplacement des éléments de balisage que vous allez...
http://api.jquery.com/contains-selector/
OriginalL'auteur Rik Heywood
Les autres solutions peuvent être insensibles à la casse dans la recherche de la mise en évidence des termes, mais ne gardent pas l'affaire de la chaîne d'origine. Donc la recherche pour "st" trouverez "ST" mais le sélectionner comme "saint", le terme de recherche.
J'utilise la suite. Il doit en premier lieu le remplacement de tableau, et ensuite utilise str_replace() avec les paramètres de tableau - qui évite la récursivité.
OriginalL'auteur RockwoodON