>  기사  >  백엔드 개발  >  PHP 배열을 xml로 변환하는 함수는 무엇입니까?

PHP 배열을 xml로 변환하는 함수는 무엇입니까?

藏色散人
藏色散人원래의
2020-08-26 10:07:382420검색

PHP 배열을 xml로 변환하는 함수는 "arr2xml"입니다. 사용 방법: 먼저 php 샘플 파일을 만든 다음 "arr2xml" 메서드를 정의한 다음 foreach 문과 "preg_replace" 및 기타 함수를 사용하여 XML로 배열합니다.

PHP 배열을 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;
}

위는 구현 방법입니다. 첫 번째 매개변수는 변환하려는 배열입니다. 두 번째 선택적 매개변수는 b2a0af5a8fd26276da50279a1c63a57a

테스트 코드:

$arr=array(&#39;a&#39;=>&#39;aaa&#39;,&#39;b&#39;=>array(&#39;c&#39;=>&#39;1234&#39; , &#39;d&#39; => "asdfasdf"));echo arr2xml($arr);

코드 실행 후 결과:

<xml><a><![CDATA[aaa]]></a><b><c><![CDATA[1234]]></c><d><![CDATA[asdfasdf]]></d></b></xml>

--------- --------- -

업데이트:

사용 과정에서 다음 형식의 배열 변환에 문제가 있음을 발견했습니다.

array(    &#39;item&#39; => array(        array(            &#39;title&#39; => &#39;qwe&#39;,
            &#39;description&#39; => &#39;rtrt&#39;,
            &#39;picurl&#39; => &#39;sdfsd&#39;,
            &#39;url&#39; => &#39;ghjghj&#39;
        ),        array(            &#39;title&#39; => &#39;jyutyu&#39;,
            &#39;description&#39; => &#39;werwe&#39;,
            &#39;picurl&#39; => &#39;xcvxv&#39;,
            &#39;url&#39; => &#39;ghjgh&#39;
        )
    )
);

변환된 결과는 다음과 같습니다.

<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은 전체 3938132b2ada4c5fb6f77d147419138af35d6e602fd7d0f0edfa6f7d103c1b57 우리는 해당 노드 레이어를 원하지 않습니다. 그러나 PHP에서는 아래 첨자가 동일한 이름을 가질 수 없으며 여러 항목을 가질 수 없습니다. 무엇을 해야 할까요?

item[0], item[1] 등 항목에 첨자를 붙이고, 변환 과정에서 [] 형태의 첨자를 제거하여 여러 항목 노드를 나란히 이루는 방법을 생각했습니다.

수정된 함수는 다음과 같습니다.

function arr2xml($data, $root = true){    $str="";    if($root)$str .= "<xml>";    foreach($data as $key => $val){        //去掉key中的下标[]
        $key = preg_replace(&#39;/\[\d*\]/&#39;, &#39;&#39;, $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(    &#39;item[0]&#39; => array(            &#39;title&#39; => &#39;qwe&#39;,
            &#39;description&#39; => &#39;rtrt&#39;,
            &#39;picurl&#39; => &#39;sdfsd&#39;,
            &#39;url&#39; => &#39;ghjghj&#39;
        ),
    &#39;item[1]&#39; => array(            &#39;title&#39; => &#39;jyutyu&#39;,
            &#39;description&#39; => &#39;werwe&#39;,
            &#39;picurl&#39; => &#39;xcvxv&#39;,
            &#39;url&#39; => &#39;ghjgh&#39;
        )
);

변환된 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.