le 22/06/2005 à 03:35
Problèmes Expression Régulière
Bonjour, Voila j'ai fait un petit code avec des Expressions Régulière pour
transformer certaine balise qui me sont envoyé par un autre code...
ces balises ne sont pour la plupart pas valide en Xhtml
(elle sont devenue obsolettes) ou elle prennent de la place pour rien...
Dans mon code certaine marche, il y en a qu'une qui marche, 2 autre qui ne font rien du tout et une qui marche mais pose problème avec une fonction (regarder les commentaires sur les motifs.
Merci d'avance
++
Ps : les commentaires tout au dessus sont les texte d'essai pour les regexp...
transformer certaine balise qui me sont envoyé par un autre code...
ces balises ne sont pour la plupart pas valide en Xhtml
(elle sont devenue obsolettes) ou elle prennent de la place pour rien...
Dans mon code certaine marche, il y en a qu'une qui marche, 2 autre qui ne font rien du tout et une qui marche mais pose problème avec une fonction (regarder les commentaires sur les motifs.
<?php
/* OK______________________________
$txt = '<span style="color: rgb(51, 204, 0);">Salut</span><br>
<span style="color: rgb(0, 191, 255);">Salut</span><br>
<span style="color: rgb(255, 255, 0);">Salut</span><br>
<span style="color: rgb(255, 153, 0);">Salut</span><br>
<span style="color: rgb(255, 0, 0);">Salut</span><br>';
*/
/* PAS_OK__________________________
$txt = '<ol>
<li style="color: rgb(0, 191, 255);">Un liste chiffrée</li>
<li><span style="color: rgb(0, 191, 255);">En couleur ?</span></li>
</ol>';
*/
/* OK_SAUF_FONCTION_________________
$txt = '<font style="color: rgb(51, 204, 0);" size="7">salut</font>';
*/
/* PAS_OK__________________________
$txt = '<div style="text-align: center;"><span style="color: rgb(255, 153, 0);">Salut</span><br>
</div>';
*/
$txt ='<font size="7"><font size="3">s</font></font>';
function new_size ($size, $txt, $nbr="", $hd="") {
if ($txt == "1") { $txt = 10;}
if ($txt == "2") { $txt = 13;}
if ($txt == "3") { $txt = 16;}
if ($txt == "4") { $txt = 18;}
if ($txt == "5") { $txt = 24;}
if ($txt == "6") { $txt = 32;}
if ($txt == "7") { $txt = 48;}
if ($nbr == 1) {
$txt = '<span style="color: '.$hd.'; font-size: '.$size.'px;">'.$txt.'</span>';
} else {
$txt = '<span style="font-size: '.$size.'px;">'.$txt.'</span>';
}
return($txt);
}
$frst[] = '<br>';
$frst[] = 'rgb(51, 204, 0)';
$frst[] = 'rgb(0, 191, 255)';
$frst[] = 'rgb(255, 255, 0)';
$frst[] = 'rgb(255, 153, 0)';
$frst[] = 'rgb(255, 0, 0)';
$frst[] = 'rgb(255, 255, 255)';
$scnd[] = '';
$scnd[] = '#33CC00';
$scnd[] = '#00BFFF';
$scnd[] = '#FFFF00';
$scnd[] = '#FF9900';
$scnd[] = '#FF0000';
$scnd[] = '#FFFFFF';
$dibcode[] = '`<li><span style="(.*?)">(.*+)</span></li>`siU';
// il ne réagit pas du tout
$dibcode[] = '`<font style="color: (\#[a-zA-Z0-9]+);" size="([1-7]{1})">(.*)</font>`siU';
// j'ai une fonction avec et il affiche le texte au lieu du résultat de la fonction
$dibcode[] = '`<div style="(.*)"><span style="(.*)">(.*)</span>()*</div>`siU';
// il ne réagit pas du tout
$dibcode[] = '`<font size="([1-7]+)">(.*)</font>`si';
// il change le premier mais pas si il y en a plusieurs
// et j'aimerais que ce dernier RegExp compte le nombre de balises
// imbriquées et retourne celle qui est le plus au milieu (juste le chiffre
// quoi :))
$endcode[] = '<li style="color :$1;">$2</li>';
$endcode[] = 'new_size("$2", "$3", 1, "$1");';
$endcode[] = '<div style="$1 $2">$3</div>';
$endcode[] = '<span style="font-size: $1;">$2</span>';
$txt = str_replace($frst, $scnd, $txt);
$txt = preg_replace($dibcode, $endcode, $txt);
echo $txt;
?>
Merci d'avance
++
Ps : les commentaires tout au dessus sont les texte d'essai pour les regexp...