Salut
Je cherche à porter dynamiquement une balise html de type <font>blabla</font> vers un affichage comme celui ci : <c:style>blabla</c:style> (pour generer des PDF via php..)
la balise font originelle peut avoir en argument color et/ou size dans n'importe quel ordre donc :
<font color="#fff000" size="12">blabla/<font> donnera => <c:style:12&#fff000>blabla</c:style>
<font color="#fff000">blabla/<font> donnera => <c:style:null&#fff000>blabla</c:style>
etc..
voici la regexp + code auxquels je suis arrivé.. et ca marche dans certain cas.. dans dautre non ! et il n'ya pas vraiment de logique dans les bugs..:
Code :
- $finalOutput = preg_replace_callback(
- '/<font(( +)size="([0-9]+)"|( +)color="(#[0-9a-fA-F]+)" ){1,2}( *)>([. \w!?\-=\+:;,\(\)@°%\*&<>\/€{}\[\]\.~#\|\^²§µ$¤£_"\']*)<\/font>/',
- create_function(
- '$matches',
- '$size = (!empty($matches[3])) ? ":".$matches[3] : ":null";
- $color = (!empty($matches[5])) ? "&".$matches[5] : "&null";
- $output = "<c:style".$size.$color.">".$matches[7]."</c:style>";
- return $output;'
- ),
- $output);
|
ps:j'ai du me taper tous les caracteres speciaux a la main.. c'est pour des test car le PDF bug sur certain caracteres.. c'est assez bizarre.. ca ne marche pas mieu si je met un (.*) ou un ([^<\/font> ) au milieu
le probleme : la plupart du temps que j'ai plusieurs couleurs dans un meme bloc de texte, le code ne prend que la premiere balise <font et la derniere balise </font fermante.. (et encore ca part en sucette un peu n'importe comment..) :
Citation :
remise s</font>up<font color="#00CCFF">lle</font>nmtaeire
d<font color="#0000FF">e 36| Yaho<font
color="#CCFFFF">uu</font> <font color=
"#CCFFFF">c'est</font> exceptionne
l...
|
A l'aide ?
Message édité par bixibu le 01-08-2007 à 09:47:25