thekiller242 | 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 :
- <style couleur='rouge'>texte</style>
|
Par contre, il marche normalement avec :
Code : XML
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 :
- <?php
- error_reporting(E_ALL ^ E_NOTICE);
- ////////////////////////////////////////////////////////
- //----------------CREE PAR HINOMI MOKUZO----------------//
- //-------------------------LE 22/09/07-------------------------//
- //------------------------Team MOKUZO------------------------//
- ////////////////////////////////////////////////////////
- function code($texte) {
- $code_xml = new DomDocument();
- $res = '';
- $code_xml->load('balises.xml');
-
- $id = 0;
-
- for($x = 0 ; $x < strlen($texte) ; $x++ ) {
- preg_match("#<(\w*)((?: \w+='[\w. _/:-]+')*)>#", $texte, $balise);
- if (preg_match("#".$balise[0]."(.*)</".$balise[1].">#isU", $texte, $baliseContain)) {
- $balises[$id]=array("nom"=>$balise[1], "params"=>$balise[2]);
- $texte = preg_replace("#".$baliseContain[0]."#isU", "[Balise".$id."]".$baliseContain[1]."[EndBalise".$id."]", $texte);
-
- $params = split("' ", trim($balise[2]));
- $id2 = 0;
- foreach($params as $cle=>$value) {
- if (preg_match("#(\w+)='([\w. _/:-]+)#", $value, $param)) {
- $parametres[$id2]=array("nom"=>$param[1], "value"=>$param[2]);
- $id2++;
- }
- else {
- $parametres="";
- }
- }
- $balises[$id]['params']=$parametres;
- $id++;
- }
- else {
- $texte = str_replace("<".$balise[1].">", "<".$balise[1].">", $texte);
- }
- }
-
- $texte = preg_replace("#</(.+)>#isU", "</$1>", $texte);
-
- $listeBalise = $code_xml->getElementsByTagName('balise');
- foreach ($listeBalise as $balise) {
- $codeBalise[$balise->getAttribute('nom')]=array("code"=>$balise->getElementsByTagName('nom')->item(0)->nodeValue);
- $params = $balise->getElementsByTagName('param');
- foreach ($params as $param) {
- $codeBalise[$balise->getAttribute('nom')][$param->getAttribute('nom')]=$param->nodeValue;
- }
- $codeBalise[$balise->getAttribute('nom')]['classe']=$balise->getElementsByTagName('class')->item(0)->nodeValue;
- }
-
- $listKeys = $code_xml->getElementsByTagName('key');
- foreach ($listKeys as $keys) {
- $listeKeys[$keys->getAttribute('nom')]=$keys->nodeValue;
- }
-
- for ($x = 0 ; $x < $id ; $x++) {
- $parametres = "";
- if (array_key_exists($balises[$x]['nom'], $codeBalise)) {
- $code = $codeBalise[$balises[$x]['nom']]['code'];
- if ($balises[$x]['params']!="" ) {
- foreach ($balises[$x]['params'] as $cle=>$paramArray) {
- if (array_key_exists($paramArray['nom'], $codeBalise[$balises[$x]['nom']])) {
- $parametres.=" ".$codeBalise[$balises[$x]['nom']][$paramArray['nom']]."='".((array_key_exists($paramArray['value'], $listeKeys))?$listeKeys[$paramArray['value']]:$paramArray['value'])."'";
- }
- }
- }
- if ($codeBalise[$balises[$x]['nom']]!="" ) $parametres.=" class='".$codeBalise[$balises[$x]['nom']]['classe']."'";
- $texte = preg_replace("#\[Balise".$x."\](.*)\[EndBalise".$x."\]#isU", "<".$code.$parametres.">$1</".$code.">", $texte);
- }
- else {
- $code = $balises[$x]['nom'];
- $texte = preg_replace("#\[Balise".$x."\](.*)\[EndBalise".$x."\]#isU", "<".$code.">$1</".$code.">", $texte);
- }
- }
- return $texte;
- }
- $texte = "<image source='http://www.ressourceweb.com/templates/default/im/haut.gif'></image><lien cible='nouvelle page' url='http://www.google.fr'>google</lien>";
- echo code($texte);
- ?>
|
balises.php
Code : XML
Code :
- <?xml version="1.0" encoding="ISO-8859-1"?>
- <code>
- <balises>
- <balise nom="gras">
- <nom>b</nom>
- </balise>
-
-
-
- <balise nom="style">
- <nom>font</nom>
- <param nom="couleur">color</param>
-
- </balise>
-
-
-
-
-
- </balises>
- <keys>
- <key nom="rouge">red</key>
- <key nom="jaune">yellow</key>
-
- </keys>
- </code>
|
J'ai envoyé un mail à 1and1, mais ils sont incapables de me répondre.
Vous êtes mon dernier espoir .
Merci d'avance.
@++ |