Xavier Brochard
2010-07-12 11:08:05 UTC
Bonjour
Je ne sais pas si mon titre est bien choisi mais voilà:
Dans un résultat de recherche, je veux "colorer" (avec un tag html) le motif
recherché.
Dans la plupart des cas le format de résultat contiendra du code html. Mais
ce code n'est pas déterminé à l'avance, soit parce qu'il fait partie du
résultat, soit parce qu'il détermine le format et est choisi lors du
paramétrage du bazar.
Parfois le motif recherché figure aussi dans le code html, et bien
évidemment il ne faut alors pas le "colorer".
Cette expression rationnelle fonctionne assez bien, mais pas tout le temps:
eval { $print =~ s/>[^<]+/&paintFoundText($&)/gei };
(la fonction paintFoundText se contente d'ajouter un tag <span class=found>
autour du motif trouvé)
Elle a l'avantage d'être simple, et de ne pas trop ralentir le programme,
pour une "feature" de peu d'importance.
En cherchant des trucs plus élaboré (mais peu probants), je finis par penser
qu'il faudrait faire beaucoup beaucoup plus compliqué. Mais alors j'ai peur
que ça consomme trop de ressources.
Qu'en pensez vous? et avez vous des pistes?
J'ai essayé d'être clair et pas trop long, mais comme mon niveau de Perl
est faible... si c'est du charabia, engueulez-moi.
cordialement,
xavier
Je ne sais pas si mon titre est bien choisi mais voilà:
Dans un résultat de recherche, je veux "colorer" (avec un tag html) le motif
recherché.
Dans la plupart des cas le format de résultat contiendra du code html. Mais
ce code n'est pas déterminé à l'avance, soit parce qu'il fait partie du
résultat, soit parce qu'il détermine le format et est choisi lors du
paramétrage du bazar.
Parfois le motif recherché figure aussi dans le code html, et bien
évidemment il ne faut alors pas le "colorer".
Cette expression rationnelle fonctionne assez bien, mais pas tout le temps:
eval { $print =~ s/>[^<]+/&paintFoundText($&)/gei };
(la fonction paintFoundText se contente d'ajouter un tag <span class=found>
autour du motif trouvé)
Elle a l'avantage d'être simple, et de ne pas trop ralentir le programme,
pour une "feature" de peu d'importance.
En cherchant des trucs plus élaboré (mais peu probants), je finis par penser
qu'il faudrait faire beaucoup beaucoup plus compliqué. Mais alors j'ai peur
que ça consomme trop de ressources.
Qu'en pensez vous? et avez vous des pistes?
J'ai essayé d'être clair et pas trop long, mais comme mon niveau de Perl
est faible... si c'est du charabia, engueulez-moi.
cordialement,
xavier