Nanane Posté 6 Juillet 2007 Posté 6 Juillet 2007 Bonjour, Voila je dois trouver une solution pour pouvoir, a partir d'une chaine de caractère, la "highlighter" dans une page Web. J'ai donc ma chaine: $select. et les données de la page : $data. Et je dois insérer des balises pour highlighter $select dans $data. Seulemt $select est en texte, et $data contient des balises HTML. J'ai donc tester de prendre $select et de le modifier en Regexp pour qu'il ignore toutes les balises entre chaque mot, mais la ponctuation et les espaces me jouent des mauvais tours (le temps de traitement devient trop long). Donc je me demandais si vous aviez une solution. Voici ma regexp au cas ou : $select =~ s/([\w]+|[^\w]+)/$1\(\\s\*<\.\*\?>\\s\*\)\*/g ; pour ensuite faire : if($data =~ m/$select/si) {#insertion des balises de highlight;}
Nanane Posté 10 Juillet 2007 Auteur Posté 10 Juillet 2007 (modifié) J'ai tenté d'utiliser HTML::Highlight mais sans reussite. Voila le code de ma fonction difference : sub difference{($urldiff,$datadiff) = _AT__;use DBI;use HTML::Entities;use HTML::Highlight;use utf8;if(utf8::is_utf8($datadiff)){print "data is utf8.";} else{utf8::encode($datadiff);}decode_entities($datadiff);$dbh = DBI->connect($DBSOURCE, $USER, $PASS);$sel = $dbh->prepare("SELECT selection, langues FROM totranslate WHERE url='$urldiff';");$sel->execute || die "probleme de requete $DBI::errstr";my $highlighted_data;while(($select,$langues) = $sel->fetchrow() ){ _AT_langs_d = listlangues($langues); utf8::decode($select); _AT_selects =split (/\W/,$select); my $hl = new HTML::Highlight ( words => [@selects], wildcards => [], colors => [], czech_language => 0, debug => 0); $highlighted_data = $hl->highlight($datadiff);}print $highlighted_data;$sel->finish;$dbh->disconnect;return true;} Une idée peut etre ? Ma fonction n'affiche rien du tout a l'ecran... Modifié 10 Juillet 2007 par Nanane
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant