[php/XML/regex] parsing bbcode aleatoire

parsing bbcode aleatoire [php/XML/regex] - PHP - Programmation

Marsh Posté le 08-03-2005 à 00:40:40    

Bonjour.  
 
j'ai devellopé un parser bbcode pour mon site:
 
dont voici un morceau:
 

Code :
  1. $query = "/pseudocodes/balise";
  2.  $list = $this->xpathcontext->query($query);
  3.  for($i = 0; $i < $list->length; $i++){
  4.   $pscode = $list->item($i)->getAttribute("nom" );
  5.   $tag = str_replace('$',"\\",$list->item($i)->nodeValue);
  6.   if($list->item($i)->getAttribute("param" ) == "true" ){
  7.    $texte = preg_replace("(\[$pscode=([^]]*)\]([[:print:]-\n\t\r]*?)\[/$pscode\])",trim($tag),$texte);
  8.   }
  9.   elseif($list->item($i)->getAttribute("unique" ) == "true" ){
  10.    $texte = preg_replace("(\[$pscode\])",trim($tag),$texte);
  11.   }
  12.   else{
  13.    $texte = preg_replace("(\[$pscode\]([[:print:]-\n\t\r]*?)\[/$pscode\])",trim($tag),$texte);
  14.   }
  15.  }


 
un fichier xml contenant les balises est parsé.  
exemple

Code :
  1. <balise nom="u" >
  2.  <![CDATA[<u>$1</u>]]>
  3. </balise>
  4. <balise nom="b" >
  5.  <![CDATA[<strong>$1</strong>]]>
  6. </balise>
  7. <balise nom="i" >
  8.  <![CDATA[<em>$1</em>]]>
  9. </balise>


 
 
voici mon probleme. chez moi tout mes balises sont parsées et donc remplacé par du code html, mais sur le serveur d'ovh, je ne sais pas trop pourquoi mais parfois certain tag ne sont pas tout le temps parsé.  
 
par exemple certaines balises [li] sont parser correctement je je ne sais pourquoi la balise [li]juste en dessous ne l'est pas.
 
enfin si vous voulez voir par vous meme:
http://pllune.net/core.php5?article=4
 
je comprend vraiment pas la. Je ne vois pas de logique dans tous ça.  
Si vous pouviez m'eclairer ce serait vraiment cool.  
 
 
merci d'avance.
 
 
pierrot la lune


Message édité par Lunatik3 le 08-03-2005 à 00:41:03
Reply

Marsh Posté le 08-03-2005 à 00:40:40   

Reply

Marsh Posté le 08-03-2005 à 09:47:28    

c'est à cause des accents qui ne sont pas pris en compte dans la classe [: print:] chez ovh, essaye par exemple :

Code :
  1. $texte = preg_replace("#\[li\](.*)\[/li\]#Uis","<li>\\1</li>",$texte);

Reply

Marsh Posté le 08-03-2005 à 12:30:10    

merci beaucoup. tu me sauves la vie ;)
 
les regex c'est magique

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed