par
Ripat » 01 juil. 2007, 16:50
Les fonctions regex de PHP peuvent retourner le nombre d'occurrences du motif mais pas le nombre de caractères capturés par ton motif. Il faut travailler séquentiellement:
1- on capture les === et ce qui suit
2- on envoie les captures dans une fonction qui va compter les === et les remplacer par la balise <hx>
$txt = '
= Titre niveau 1=
texte 1
== Titre niveau 2 ==
texte 2
=== Titre niveau 3===
texte 3
';
function miseEnTitre ($captures){
$nb = strlen($captures[1]);
return '<h'.$nb.'>'.$captures[2].'</h'.$nb.'>';
}
echo preg_replace_callback('#^(=+)([^=]*)\1$#m', 'miseEnTitre', $txt);
Le motif peut, le cas échéant, s'adapter à tes contraintes.
Et, les regex ne sont pas la seule solution non plus...
Les fonctions regex de PHP peuvent retourner le nombre d'occurrences du motif mais pas le nombre de caractères capturés par ton motif. Il faut travailler séquentiellement:
1- on capture les === et ce qui suit
2- on envoie les captures dans une fonction qui va compter les === et les remplacer par la balise <hx>
[php]$txt = '
= Titre niveau 1=
texte 1
== Titre niveau 2 ==
texte 2
=== Titre niveau 3===
texte 3
';
function miseEnTitre ($captures){
$nb = strlen($captures[1]);
return '<h'.$nb.'>'.$captures[2].'</h'.$nb.'>';
}
echo preg_replace_callback('#^(=+)([^=]*)\1$#m', 'miseEnTitre', $txt);
[/php]
Le motif peut, le cas échéant, s'adapter à tes contraintes.
Et, les regex ne sont pas la seule solution non plus...