DOM et 1and1

DOM et 1and1 - PHP - Programmation

Marsh Posté le 27-09-2007 à 19:18:36    

Hello :) ,
 
J'ai un petit problème avec DOM et mon compte 1and1.
Un de mes codeurs à créé un parseur de xml avec dom, dans l'objectif de créer un langage comme le zcode.
 
Le script marche nickel en local, mais sur mon hébergement 1and1, je script bug quand on veut parser des attributs :
par ex : Code : XML  

Code :
  1. <style couleur='rouge'>texte</style>


Par contre, il marche normalement avec :
Code : XML  

Code :
  1. <gras>texte</gras>


 
 
 
Bref, c'est assez bisard. Voici le phpinfo() de mon site :
http://www.robotix.fr/phpinfo.php
 
J'ai remarqué que la version de libxml, la 2.6.21 était antérieure de celle de easyphp.
 
Peut-être que le problème vient de la...
 
Voici mon code :
Code : PHP  
   

Code :
  1. <?php
  2. error_reporting(E_ALL ^ E_NOTICE);
  3. ////////////////////////////////////////////////////////
  4. //----------------CREE PAR HINOMI MOKUZO----------------//
  5. //-------------------------LE 22/09/07-------------------------//
  6. //------------------------Team MOKUZO------------------------//
  7. ////////////////////////////////////////////////////////
  8. function code($texte) {
  9.         $code_xml = new DomDocument();
  10.         $res = '';
  11.         $code_xml->load('balises.xml');
  12.      
  13.         $id = 0;
  14.      
  15.         for($x = 0 ; $x < strlen($texte) ; $x++ ) {
  16.                 preg_match("#<(\w*)((?: \w+='[\w. _/:-]+')*)>#", $texte, $balise);
  17.                 if (preg_match("#".$balise[0]."(.*)</".$balise[1].">#isU", $texte, $baliseContain)) {
  18.                         $balises[$id]=array("nom"=>$balise[1], "params"=>$balise[2]);
  19.                         $texte = preg_replace("#".$baliseContain[0]."#isU", "[Balise".$id."]".$baliseContain[1]."[EndBalise".$id."]", $texte);
  20.                      
  21.                         $params = split("' ", trim($balise[2]));
  22.                         $id2 = 0;
  23.                         foreach($params as $cle=>$value) {
  24.                                 if (preg_match("#(\w+)='([\w. _/:-]+)#", $value, $param)) {
  25.                                         $parametres[$id2]=array("nom"=>$param[1], "value"=>$param[2]);
  26.                                         $id2++;
  27.                                 }
  28.                                 else {
  29.                                         $parametres="";
  30.                                 }
  31.                         }
  32.                         $balises[$id]['params']=$parametres;
  33.                         $id++;
  34.                 }
  35.                 else {
  36.                         $texte = str_replace("<".$balise[1].">", "&lt;".$balise[1]."&gt;", $texte);
  37.                 }
  38.         }
  39.      
  40.         $texte = preg_replace("#</(.+)>#isU", "&lt;/$1&gt;", $texte);
  41.      
  42.         $listeBalise = $code_xml->getElementsByTagName('balise');
  43.         foreach ($listeBalise as $balise) {
  44.                 $codeBalise[$balise->getAttribute('nom')]=array("code"=>$balise->getElementsByTagName('nom')->item(0)->nodeValue);
  45.                 $params = $balise->getElementsByTagName('param');
  46.                 foreach ($params as $param) {
  47.                         $codeBalise[$balise->getAttribute('nom')][$param->getAttribute('nom')]=$param->nodeValue;
  48.                 }
  49.                 $codeBalise[$balise->getAttribute('nom')]['classe']=$balise->getElementsByTagName('class')->item(0)->nodeValue;
  50.         }
  51.      
  52.         $listKeys = $code_xml->getElementsByTagName('key');
  53.         foreach ($listKeys as $keys) {
  54.                 $listeKeys[$keys->getAttribute('nom')]=$keys->nodeValue;
  55.         }
  56.      
  57.         for ($x = 0 ; $x < $id ; $x++) {
  58.                 $parametres = "";
  59.                 if (array_key_exists($balises[$x]['nom'], $codeBalise)) {
  60.                         $code = $codeBalise[$balises[$x]['nom']]['code'];
  61.                         if ($balises[$x]['params']!="" ) {
  62.                                 foreach ($balises[$x]['params'] as $cle=>$paramArray) {
  63.                                         if (array_key_exists($paramArray['nom'], $codeBalise[$balises[$x]['nom']])) {
  64.                                                 $parametres.=" ".$codeBalise[$balises[$x]['nom']][$paramArray['nom']]."='".((array_key_exists($paramArray['value'], $listeKeys))?$listeKeys[$paramArray['value']]:$paramArray['value'])."'";
  65.                                         }
  66.                                 }
  67.                         }
  68.                         if ($codeBalise[$balises[$x]['nom']]!="" ) $parametres.=" class='".$codeBalise[$balises[$x]['nom']]['classe']."'";
  69.                         $texte = preg_replace("#\[Balise".$x."\](.*)\[EndBalise".$x."\]#isU", "<".$code.$parametres.">$1</".$code.">", $texte);
  70.                 }
  71.                 else {
  72.                         $code = $balises[$x]['nom'];
  73.                         $texte = preg_replace("#\[Balise".$x."\](.*)\[EndBalise".$x."\]#isU", "&lt;".$code."&gt;$1&lt;/".$code."&gt;", $texte);
  74.                 }
  75.         }
  76.         return $texte;
  77. }
  78. $texte = "<image source='http://www.ressourceweb.com/templates/default/im/haut.gif'></image><lien cible='nouvelle page' url='http://www.google.fr'>google</lien>";
  79. echo code($texte);
  80. ?>


 
balises.php
Code : XML  

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <code>
  3.         <balises>
  4.                 <balise nom="gras">
  5.                         <nom>b</nom>
  6.                 </balise>
  7.              
  8.      
  9.              
  10.                 <balise nom="style">
  11.                         <nom>font</nom>
  12.                         <param nom="couleur">color</param>
  13.                      
  14.                 </balise>
  15.              
  16.              
  17.      
  18.              
  19.              
  20.         </balises>
  21.         <keys>
  22.                 <key nom="rouge">red</key>
  23.                 <key nom="jaune">yellow</key>
  24.              
  25.         </keys>
  26. </code>


 
 
J'ai envoyé un mail à 1and1, mais ils sont incapables de me répondre.
Vous êtes mon dernier espoir :p .
Merci d'avance.
@++

Reply

Marsh Posté le 27-09-2007 à 19:18:36   

Reply

Marsh Posté le 28-09-2007 à 17:48:59    

UP


---------------
http://www.robotix.fr
Reply

Marsh Posté le 28-09-2007 à 20:58:10    

Deux choses :
- ça a l'air d'être une manie sur ce forum de dire que "ça ne marche pas" ou que "ça bug"... essaie d'être un minimum précis quand tu décris un problème et que tu souhaites être aidé... [:pingouino]  ;
- au lieu de poster ton code complet (à moins qu'il soit de petite taille), essaie d'abord de réduire le problème à un exemple minimal (quelques lignes de code si possible), et poste l'exemple, parce que personne ne risque d'avoir envie de lire/comprendre tout ça.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 30-09-2007 à 12:38:56    

Hello,
Ca fait longtemps que je cherche d'où ça vient, mais je n'ai jamais trouvé.
J'ai envoyé un mail à 1and1, ils sont incapables de me répondre.
 
J'ai essayé de simplifié au max mon code.
Vous pouvez tester le script ici :  
http://www.robotix.fr/zcode
 
Pour le faire bugger :  
<style couleur='rouge'>texte</style>
 
Tout marche en local :p .
Voilà ;).
En espérant être clair.


---------------
http://www.robotix.fr
Reply

Marsh Posté le 01-10-2007 à 16:55:28    

UP


---------------
http://www.robotix.fr
Reply

Marsh Posté le 01-10-2007 à 17:10:17    

thekiller242 a écrit :

J'ai essayé de simplifié au max mon code.
Vous pouvez tester le script ici :  
http://www.robotix.fr/zcode


Ah bin là on y voit tout de suite plus clair. Grace à mon décompresseur-interpreteur PHP mental je peux te dire que le problème vient de la ligne 12 de ton index.php.

Reply

Marsh Posté le 01-10-2007 à 17:36:40    

...
Faut parce qu'a la ligen 12, y'a :  
 $code_xml->load('balises.xml');
 
Or, le script marche avec :  
<gras>test</gras>
Donc, il charge correctement le fichier.
Faut revoir ton décompresseur-interpreteur PHP^^.


---------------
http://www.robotix.fr
Reply

Marsh Posté le 01-10-2007 à 17:56:59    

Bon, je tente ma chance. [:petrus75]  
 
Ligne 18 ??


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 01-10-2007 à 18:36:25    

Ba pourquoi ça marcherait en local si ça merderais en ligne 18 XD?


---------------
http://www.robotix.fr
Reply

Marsh Posté le 02-10-2007 à 09:11:49    

ton fichier balise.xml tu l'as bien uppé sur ton serveur au même niveau que ton script php?
Les droits sont correctement réglés dessus?

Reply

Marsh Posté le 02-10-2007 à 09:11:49   

Reply

Marsh Posté le 02-10-2007 à 17:21:55    

Dans le doute, je l'ai mis en 777, mais ça change rien ;) .
Sinon, il est bien au même dossier que mon script...


---------------
http://www.robotix.fr
Reply

Marsh Posté le 04-10-2007 à 16:37:34    

UP


---------------
http://www.robotix.fr
Reply

Marsh Posté le 05-10-2007 à 16:51:03    

Personne n'a de solution ?


---------------
http://www.robotix.fr
Reply

Sujets relatifs:

Leave a Replay

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