La fonction de conversion des tableaux PHP en XML est "arr2xml". Comment l'utiliser : créez d'abord un exemple de fichier PHP ; puis définissez une méthode "arr2xml" puis utilisez l'instruction foreach et "preg_replace" et autres ; des fonctions pour convertir le tableau en XML suffisent.
Recommandé : "Tutoriel vidéo PHP"
La nécessité de convertir des tableaux gagnants PHP en XML est courante, et Il existe de nombreuses méthodes d'implémentation. Baidu a recherché diverses méthodes d'implémentation, mais en gros, ils ont simplement emprunté certains composants, etc. J'ai moi-même écrit une méthode de regroupement de chaînes, qui prend en charge les tableaux multidimensionnels. À titre de référence seulement, n'hésitez pas à nous faire savoir s'il y a des défauts !
/** * 将数组转换为xml * @param array $data 要转换的数组 * @param bool $root 是否要根节点 * @return string xml字符串 * @author Dragondean * @url http://www.cnblogs.com/dragondean*/function arr2xml($data, $root = true){ $str=""; if($root)$str .= "<xml>"; foreach($data as $key => $val){ if(is_array($val)){ $child = arr2xml($val, false); $str .= "<$key>$child</$key>"; }else{ $str.= "<$key><![CDATA[$val]]></$key>"; } } if($root)$str .= "</xml>"; return $str; }
Ce qui précède est la méthode d'implémentation. Le premier paramètre est le tableau que vous souhaitez convertir. Le deuxième paramètre facultatif définit s'il faut ajouter le nœud racine
Code de test :
$arr=array('a'=>'aaa','b'=>array('c'=>'1234' , 'd' => "asdfasdf"));echo arr2xml($arr);
Le résultat après exécution du code est :
<xml><a><![CDATA[aaa]]></a><b><c><![CDATA[1234]]></c><d><![CDATA[asdfasdf]]></d></b></xml>
------------------- ------- -- ----------
Mise à jour :
Lors de l'utilisation, il a été constaté qu'il y aurait des problèmes avec la conversion du tableau dans le format suivant :
array( 'item' => array( array( 'title' => 'qwe', 'description' => 'rtrt', 'picurl' => 'sdfsd', 'url' => 'ghjghj' ), array( 'title' => 'jyutyu', 'description' => 'werwe', 'picurl' => 'xcvxv', 'url' => 'ghjgh' ) ) );
converti Le résultat est :
<xml> <item> <0> <title> <![CDATA[qwe]]> </title> <description> <![CDATA[rtrt]]> </description> <picurl> <![CDATA[sdfsd]]> </picurl> <url> <![CDATA[ghjghj]]> </url> </0> <1> <title> <![CDATA[jyutyu]]> </title> <description> <![CDATA[werwe]]> </description> <picurl> <![CDATA[xcvxv]]> </picurl> <url> <![CDATA[ghjgh]]> </url> </1> </item></xml>
Normalement, nous ne voulons pas que le nœud entier du XML soit converti ci-dessus : <0><1>. Cependant, en PHP, l'indice ne peut pas avoir le même nom et ne peut pas avoir plusieurs éléments. Ce qu'il faut faire?
J'ai pensé à un moyen d'indexer des éléments, tels que item[0], item[1], et de supprimer les indices sous la forme de [] pendant le processus de conversion pour obtenir plusieurs nœuds d'élément côte à côte. La fonction
est modifiée comme suit :
function arr2xml($data, $root = true){ $str=""; if($root)$str .= "<xml>"; foreach($data as $key => $val){ //去掉key中的下标[] $key = preg_replace('/\[\d*\]/', '', $key); if(is_array($val)){ $child = arr2xml($val, false); $str .= "<$key>$child</$key>"; }else{ $str.= "<$key><![CDATA[$val]]></$key>"; } } if($root)$str .= "</xml>"; return $str; }
Ensuite, le tableau qui doit être converti ci-dessus doit également être modifié :
$arr1 =array( 'item[0]' => array( 'title' => 'qwe', 'description' => 'rtrt', 'picurl' => 'sdfsd', 'url' => 'ghjghj' ), 'item[1]' => array( 'title' => 'jyutyu', 'description' => 'werwe', 'picurl' => 'xcvxv', 'url' => 'ghjgh' ) );
Le XML converti est le suivant :
<xml> <item> <title> <![CDATA[qwe]]> </title> <description> <![CDATA[rtrt]]> </description> <picurl> <![CDATA[sdfsd]]> </picurl> <url> <![CDATA[ghjghj]]> </url> </item> <item> <title> <![CDATA[jyutyu]]> </title> <description> <![CDATA[werwe]]> </description> <picurl> <![CDATA[xcvxv]]> </picurl> <url> <![CDATA[ghjgh]]> </url> </item></xml>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!