Maison > Article > développement back-end > Quelle est la fonction pour convertir un tableau php en XML ?
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 b2a0af5a8fd26276da50279a1c63a57a
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 : cd3dfde4a81e47b0e19b5c7a4437feeaf35d6e602fd7d0f0edfa6f7d103c1b57. 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!