Salut
Voila, j'ai un petit probleme, dans un outils de conversion de fiche produit html vers PDF, je dois modifier toutes les balises <span style="color:#xxxxxx">blablabla</font> vers <c:style:#xxxxxx>. CA j'arrive à le faire via ce code PHP :
Code :
- $finalOutput = preg_replace_callback(
- '/<span( +)style="color:( *)(#[0-9a-fA-F]+);"( *)>([^<]*)<\\/span>/',
- create_function(
- '$matches',
- '$size = ":null";
- $color = (!empty($matches[3])) ? "&".$matches[3] : "&null";
- $output = "<c:style".$size.$color.">".$matches[5]."</c:style>";
- return $output;'
- ),
- $output);
- return $output;
|
Le probleme c'est qu'il peux y avoir des balises span imbriquées et CA, ma regexp ne le gere pas.. comment faire? car en gros j'ai mon pattern :
Code :
- '/<span( +)style="color:( *)(#[0-9a-fA-F]+);"( *)>([^<]*)<\\/span>/'
|
mais entre les deux balises span, il faudrait que je puisse dire qu'il puisse y avoir encore une fois mon pattern à l'interieur de ces balises, puis a l'interieur de ce meme pattern encore un fois mon pattern.. bref ca ressemble à du recursif.. en gros ma regexp doit pouvoir gérer ce cas tordu par les cheveux :
<span style="color:#xxxxxx"><span style="color:#xxxxxx">blab<span style="color:#xxxxxx">blabla<span style="color:#xxxxxx">blablabla</font>bla</font>labla</font></font>
comment faire ?