PHP 배열을 xml로 변환하는 함수는 "arr2xml"입니다. 사용 방법: 먼저 php 샘플 파일을 만든 다음 "arr2xml" 메서드를 정의한 다음 foreach 문과 "preg_replace" 및 기타 함수를 사용하여 XML로 배열합니다.
추천: "PHP Video Tutorial"
PHP 승리 배열을 xml로 변환해야 하는 경우가 일반적이며 Baidu에서 다양한 구현 방법을 검색했지만 기본적으로 일부 구성 요소 또는 차용 그룹이 있습니다. 무엇. 다차원 배열을 지원하는 문자열 그룹화 방법을 직접 작성했습니다. 참고만 하시고, 부족한 부분이 있으면 언제든지 알려주세요!
/** * 将数组转换为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; }
위는 구현 방법입니다. 첫 번째 매개변수는 변환하려는 배열입니다. 두 번째 선택적 매개변수는
테스트 코드:
$arr=array('a'=>'aaa','b'=>array('c'=>'1234' , 'd' => "asdfasdf"));echo arr2xml($arr);
코드 실행 후 결과:
<xml><a><![CDATA[aaa]]></a><b><c><![CDATA[1234]]></c><d><![CDATA[asdfasdf]]></d></b></xml>
--------- --------- -
업데이트:
사용 과정에서 다음 형식의 배열 변환에 문제가 있음을 발견했습니다.
array( 'item' => array( array( 'title' => 'qwe', 'description' => 'rtrt', 'picurl' => 'sdfsd', 'url' => 'ghjghj' ), array( 'title' => 'jyutyu', 'description' => 'werwe', 'picurl' => 'xcvxv', 'url' => 'ghjgh' ) ) );
변환된 결과는 다음과 같습니다.
<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>
일반적으로 위에서 변환된 xml은 전체 < 0><1> 우리는 해당 노드 레이어를 원하지 않습니다. 그러나 PHP에서는 아래 첨자가 동일한 이름을 가질 수 없으며 여러 항목을 가질 수 없습니다. 무엇을 해야 할까요?
item[0], item[1] 등 항목에 첨자를 붙이고, 변환 과정에서 [] 형태의 첨자를 제거하여 여러 항목 노드를 나란히 이루는 방법을 생각했습니다.
수정된 함수는 다음과 같습니다.
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; }
그런 다음 위에서 변환해야 할 배열도 변경해야 합니다.
$arr1 =array( 'item[0]' => array( 'title' => 'qwe', 'description' => 'rtrt', 'picurl' => 'sdfsd', 'url' => 'ghjghj' ), 'item[1]' => array( 'title' => 'jyutyu', 'description' => 'werwe', 'picurl' => 'xcvxv', 'url' => 'ghjgh' ) );
변환된 xml은 다음과 같습니다.
<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>
위 내용은 PHP 배열을 xml로 변환하는 함수는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!