Aller au contenu

[Perl] Highlighting de code HTML


Nanane

Sujets conseillés

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;}

Lien vers le commentaire
Partager sur d’autres sites

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é par Nanane
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...