PHP 배열을 XML로 변환하는 방법: 1. 콜백 함수를 사용하지 않으면 코드는 [function outXmlFile($file, $xml_str)]입니다. 2. 콜백 메서드는 불규칙한 xml을 생성합니다. 코드는 [$this-> arrTo_Xml ($value, $key)].
php 배열을 xml로 변환하는 방법:
방법 1: 네이티브 쓰기
<?php /** * 简单原生的数组转为xml * @param $arr * @return string */ function arrayToXml($arr) { $xml = "<root>"; foreach ($arr as $key => $val) { if (is_array($val)) { $xml .= "<" . $key . ">" . arrayToXml($val) . "</" . $key . ">"; } else { $xml .= "<" . $key . ">" . $val . "</" . $key . ">"; } } $xml .= "</root>"; return $xml; } $arr = array(); $arr["url"] = array( 1 => array( "loc" => "http://www.php.com/refessories/ind_10-gen_3/", "lastmod" => "2018/10/09" ), 2 => array( "loc" => "http://www.php.com/refeessories/ind_12-gen_5/", "lastmod" => "2018/10/09" ), 3 => array( "loc" => "http://www.php.com/refeessories/ind_15-gen_5/", "lastmod" => "2018/10/09" ), ); $simple_arrtoxml = arrayToXml($arr); var_dump($simple_arrtoxml); exit;
방법 2: 콜백 함수를 사용하지 않고 하드 코딩된 방법
/** * 把特定格式的数组转化成XML * * @param $arr array 数组格式如下 * @param string $rootNodeName 最外层节点(根节点) * @return string */ function arrToXml($arr, $rootNodeName = 'index') { $Dom = new DOMDocument('1.0', 'utf-8'); // 根节点 $root_node = $Dom->createElement($rootNodeName); $Dom->appendChild($root_node); //第一个节点 $firstNodeName = key($arr); //循环节点 foreach ($arr[$firstNodeName] as $value) { $firstNode = $Dom->createElement($firstNodeName); $root_node->appendChild($firstNode); $locNode = $Dom->createElement("loc", $value["loc"]); $firstNode->appendChild($locNode); if ($rootNodeName == 'sitemapindex') { $lastmodNode = $Dom->createElement('lastmod', $value["lastmod"]); } else { $lastmodNode = $Dom->createElement('lastmod'); $cdata = $Dom->createCDATASection($value["lastmod"]);// 生成日期特殊形式:<![CDATA[2017/09/29]]> $lastmodNode->appendChild($cdata); } $firstNode->appendChild($lastmodNode); } $Dom->formatOutput = true;//将特殊形式输出出来 $result = $Dom->saveXML(); return $result; } /** * 输出xml数据到xml文件中 * * @param $file string 文件名 * @param $xml_str * @return bool|int */ function outXmlFile($file, $xml_str) { echo "生成 ", $file, " 成功!", PHP_EOL; return file_put_contents($file, $xml_str); } /******************** 写死的方法,没有使用回调函数 **************************/ $result = array(); $result["url"] = array( 1 => array( "loc" => "http://www.php.com/refessories/ind_10-gen_3/", "lastmod" => "2018/10/09" ), 2 => array( "loc" => "http://www.php.com/refeessories/ind_12-gen_5/", "lastmod" => "2018/10/09" ), 3 => array( "loc" => "http://www.php.com/refeessories/ind_15-gen_5/", "lastmod" => "2018/10/09" ), ); $res = arrToXml($result, "ulrset"); // outXmlFile('www.baidu.com/sitic.xml', $res); // 自己选择要保存的位置 var_dump($res); exit; // ========================================================== // 结果: /** * <?xml version="1.0" encoding="utf-8"?> * <ulrset> * <url> * <loc>http://www.php.com/refessories/ind_10-gen_3/</loc> * <lastmod><![CDATA[2018/10/09]]></lastmod> * </url> * <url> * <loc>http://www.php.com/refeessories/ind_12-gen_5/</loc> * <lastmod><![CDATA[2018/10/09]]></lastmod> * </url> * <url> * <loc>http://www.php.com/refeessories/ind_15-gen_5/</loc> * <lastmod><![CDATA[2018/10/09]]></lastmod> * </url> * </ulrset> */
방법 3: 콜백 방법 , 불규칙한 XML을 생성할 수 있습니다(메서드 호출, 방법 2와 동일)
/** * @param array $arr 数组 * @param int $dom Document * @param int $item * @return string */ function arr_to_xml($arr, $dom = 0, $item = 0) { if (!$dom) { $dom = new DOMDocument("1.0"); } if (!$item) { $item = $dom->createElement("root");// 根节点 $dom->appendChild($item); } foreach ($arr as $key => $val) { $itemx = $dom->createElement(is_string($key) ? $key : "item"); $item->appendChild($itemx); if (!is_array($val)) { $text = $dom->createTextNode($val);// 创建一个文本节点 $itemx->appendChild($text); } else { arr_to_xml($val, $dom, $itemx); // 自己调用自己 } } return $dom->saveXML(); } // 或者下面的这种回调方法 /** * 把特定格式的数组转化成XML * * @param $arr * @param string $nodeName xml子节点 * @param string $element * @param string $Dom * @return string */ function arrTo_Xml($arr, $nodeName = 'index', $element = '', $Dom = '') { $Dom = empty($Dom) ? new DOMDocument('1.0', 'utf-8') : $Dom; if ($element == '') { $data = $Dom->createElement($nodeName); $Dom->appendChild($data); } else { $data = $element; } foreach ($arr as $key => $value) { if (is_array($value)) { if (!is_numeric($key)) { $element = $Dom->createElement($key); $data->appendChild($element); } $this->arrTo_Xml($value, $key, $element, $Dom);// 自己调用自己 } else { if ($key == "lastmod") { $element = $Dom->createElement($key); $cdata = $Dom->createCDATASection($value); // 生成日期特殊形式:<![CDATA[2017/09/29]]> $element->appendChild($cdata); } else { $element = $Dom->createElement($key, $value);// 用createElement创建出来的都是一行(例如:<username>xingmimng</username> } $data->appendChild($element);// 创建的一行放在哪个 xml的节点下 } } $Dom->formatOutput = true;// 输出特殊形式 $result = $Dom->saveXML(); unset($Dom);// 释放资源 return $result; } // 数据结构 $result = array(); $result["url"] = array( 1 => array( "loc" => "http://www.php.com/refessories/ind_10-gen_3/", "lastmod" => "2018/10/09" ), 2 => array( "loc" => "http://www.php.com/refeessories/ind_12-gen_5/", "lastmod" => "2018/10/09" ), 3 => array( "loc" => "http://www.php.com/refeessories/ind_15-gen_5/", "lastmod" => "2018/10/09" ), ); /************************************************************************************ * 附加: xml转为array *************************************************************************************/ /** * 将xml转为array * @param string $xml * return array */ function xml_to_array($xml) { if (!$xml) { return false; } //将XML转为array //禁止引用外部xml实体 libxml_disable_entity_loader(true); $data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true); return $data; }
관련 학습 권장사항: 초보부터 숙련까지 PHP 프로그래밍
위 내용은 PHP 배열을 XML로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

이 기사는 산 및 기본 데이터베이스 모델을 비교하여 특성과 적절한 사용 사례를 자세히 설명합니다. 산은 금융 및 전자 상거래 애플리케이션에 적합한 데이터 무결성 및 일관성을 우선시하는 반면 Base는 가용성 및

이 기사는 코드 주입과 같은 취약점을 방지하기 위해 PHP 파일 업로드 보안에 대해 설명합니다. 파일 유형 유효성 검증, 보안 저장 및 오류 처리에 중점을 두어 응용 프로그램 보안을 향상시킵니다.

기사는 내장 함수 사용, 화이트리스트 접근 방식 및 서버 측 유효성 검사와 같은 기술에 중점을 둔 보안을 향상시키기 위해 PHP 입력 유효성 검증에 대한 모범 사례를 논의합니다.

이 기사는 토큰 버킷 및 누출 된 버킷과 같은 알고리즘을 포함하여 PHP에서 API 요율 제한을 구현하고 Symfony/Rate-Limiter와 같은 라이브러리 사용 전략에 대해 설명합니다. 또한 모니터링, 동적 조정 요율 제한 및 손도 다룹니다.

이 기사에서는 PHP에서 암호를 보호하기 위해 PHP에서 Password_hash 및 Password_Verify 사용의 이점에 대해 설명합니다. 주요 주장은 이러한 기능이 자동 소금 생성, 강한 해싱 알고리즘 및 Secur를 통해 암호 보호를 향상 시킨다는 것입니다.

이 기사는 PHP 및 완화 전략의 OWASP Top 10 취약점에 대해 설명합니다. 주요 문제에는 PHP 응용 프로그램을 모니터링하고 보호하기위한 권장 도구가 포함 된 주입, 인증 파손 및 XSS가 포함됩니다.

이 기사는 PHP의 XSS 공격을 방지하기위한 전략, 입력 소독, 출력 인코딩 및 보안 향상 라이브러리 및 프레임 워크 사용에 중점을 둔 전략에 대해 설명합니다.

이 기사는 각각의 사용시기에 중점을 둔 PHP의 인터페이스 및 추상 클래스 사용에 대해 설명합니다. 인터페이스는 관련없는 클래스 및 다중 상속에 적합한 구현없이 계약을 정의합니다. 초록 클래스는 일반적인 기능을 제공합니다


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

WebStorm Mac 버전
유용한 JavaScript 개발 도구

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음
