ホームページ >バックエンド開発 >PHPの問題 >PHPの配列をXMLに変換する関数は何ですか?

PHPの配列をXMLに変換する関数は何ですか?

藏色散人
藏色散人オリジナル
2020-08-26 10:07:382478ブラウズ

phpの配列をxmlに変換する関数は「arr2xml」です 使い方: まずphpのサンプルファイルを作成し、次に「arr2xml」メソッドを定義し、その後foreach文と「preg_replace」などを使用します配列を XML に変換する関数だけで十分です。

PHPの配列をXMLに変換する関数は何ですか?

推奨: 「PHP ビデオ チュートリアル

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;
}

上記は実装方法です。最初のパラメータは変換する配列です。2 番目のオプションのパラメータは、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 内のノードのレイヤー全体は必要ありません: cd3dfde4a81e47b0e19b5c7a4437feea<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 は次のとおりです:

りー

以上がPHPの配列をXMLに変換する関数は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。