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

藏色散人
풀어 주다: 2023-03-05 08:50:01
원래의
2433명이 탐색했습니다.

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;
}
로그인 후 복사

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

테스트 코드:

$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은 전체 < 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(&#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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿