如何使用 php 从数组中的 xml 获取 <image_url> 标签的内容?
How to get content of <image_url> tag from xml in array using php?
我的 xml 文件有一些问题:
<?xml version="1.0" encoding="utf-8"?>
<smilies_export>
<smilie_categories>
<smilie_category id="b-chan" title="B-chan" display_order="0"/>
</smilie_categories>
<smilies smilie_category_id="b-chan">
<smilie title="b1" display_order="0" display_in_editor="1">
<image_url>https://lh3.googleusercontent.com/-dqj-1Y4trJI/WYsTWUJbJ7I/AAAAAAAAAKg/BFD860a7CL4FhTlziRej2v1OYPPlHTwdgCHMYCw/s0/b-chan01.jpg</image_url>
<smilie_text>:kqt1:</smilie_text>
</smilie>
<smilie title="B-chan2" display_order="10" display_in_editor="1">
<image_url>https://lh3.googleusercontent.com/-MMfECwtA-uo/WYsTWxChc8I/AAAAAAAAAKk/0sc44bvNz_wnh3iBjU2GKHmb79i-UB_MACHMYCw/s0/b-chan02.jpg</image_url>
<smilie_text>:vui:</smilie_text>
</smilie>
<smilie title="B-chan2" display_order="10" display_in_editor="1">
<image_url>https://lh3.googleusercontent.com/-fjyoCZ87ar0/WYsTWxgimsI/AAAAAAAAAKo/amG6yTA_VDU_yvlpgSS5eaFHu_efWKu1ACHMYCw/s0/b-chan03.jpg</image_url>
<smilie_text>:bchan1:</smilie_text>
</smilie>
<smilie title="B-chan2" display_order="10" display_in_editor="1">
<image_url>https://lh3.googleusercontent.com/-lz9_qPF9sFM/WYsTXKg-ueI/AAAAAAAAAKs/RuOc2jO6vYAfF_Ik4XXOFzejhhJWylZpACHMYCw/s0/b-chan04.jpg</image_url>
<smilie_text>:bchan2:</smilie_text>
</smilie>
<smilie title="B-chan2" display_order="10" display_in_editor="1">
<image_url>https://lh3.googleusercontent.com/-xGJE1gBZM60/WYsTY8wFWdI/AAAAAAAAAKw/4uq_5yuwpCcCVPQU2GjnezFx-ChoJdCoACHMYCw/s0/b-chan05.jpg</image_url>
<smilie_text>:bchan3:</smilie_text>
</smilie>
</smilies>
<smilie_categories>
<smilie_category id="ro-chan" title="ro-chan" display_order="1"/>
</smilie_categories>
<smilies smilie_category_id="ro-chan">
<smilie title="b1" display_order="1" display_in_editor="1">
<image_url>https://lh3.googleusercontent.com/-dqj-1Y4trJI/WYsTWUJbJ7I/AAAAAAAAAKg/BFD860a7CL4FhTlziRej2v1OYPPlHTwdgCHMYCw/s0/b-chan01.jpg</image_url>
<smilie_text>:kqt1:</smilie_text>
</smilie>
</smilies>
</smilies_export>
我希望它是这样的:
$codes = array($smilie_text);
$smileys = array($image_url);
in array $smilie_text & $image_url = (string1,string2,string3....)
查找 image_url & smilie_text 元素的所有 url
我在 Whosebug 上尝试了很多代码,但似乎没有找到我需要的东西。
谁能帮帮我?
您需要按标签名称使用 DOMDocument
class to get data from xml. Use getElementsByTagName()
到 select 元素,然后遍历 dom 结果并获取 selected 元素的文本。
$doc = new DOMDocument();
$doc->loadXML($xml);
$nodes = $doc->getElementsByTagName("image_url");
$image_url = [];
foreach($nodes as $node)
$image_url[] = $node->nodeValue;
检查结果 demo
我的 xml 文件有一些问题:
<?xml version="1.0" encoding="utf-8"?>
<smilies_export>
<smilie_categories>
<smilie_category id="b-chan" title="B-chan" display_order="0"/>
</smilie_categories>
<smilies smilie_category_id="b-chan">
<smilie title="b1" display_order="0" display_in_editor="1">
<image_url>https://lh3.googleusercontent.com/-dqj-1Y4trJI/WYsTWUJbJ7I/AAAAAAAAAKg/BFD860a7CL4FhTlziRej2v1OYPPlHTwdgCHMYCw/s0/b-chan01.jpg</image_url>
<smilie_text>:kqt1:</smilie_text>
</smilie>
<smilie title="B-chan2" display_order="10" display_in_editor="1">
<image_url>https://lh3.googleusercontent.com/-MMfECwtA-uo/WYsTWxChc8I/AAAAAAAAAKk/0sc44bvNz_wnh3iBjU2GKHmb79i-UB_MACHMYCw/s0/b-chan02.jpg</image_url>
<smilie_text>:vui:</smilie_text>
</smilie>
<smilie title="B-chan2" display_order="10" display_in_editor="1">
<image_url>https://lh3.googleusercontent.com/-fjyoCZ87ar0/WYsTWxgimsI/AAAAAAAAAKo/amG6yTA_VDU_yvlpgSS5eaFHu_efWKu1ACHMYCw/s0/b-chan03.jpg</image_url>
<smilie_text>:bchan1:</smilie_text>
</smilie>
<smilie title="B-chan2" display_order="10" display_in_editor="1">
<image_url>https://lh3.googleusercontent.com/-lz9_qPF9sFM/WYsTXKg-ueI/AAAAAAAAAKs/RuOc2jO6vYAfF_Ik4XXOFzejhhJWylZpACHMYCw/s0/b-chan04.jpg</image_url>
<smilie_text>:bchan2:</smilie_text>
</smilie>
<smilie title="B-chan2" display_order="10" display_in_editor="1">
<image_url>https://lh3.googleusercontent.com/-xGJE1gBZM60/WYsTY8wFWdI/AAAAAAAAAKw/4uq_5yuwpCcCVPQU2GjnezFx-ChoJdCoACHMYCw/s0/b-chan05.jpg</image_url>
<smilie_text>:bchan3:</smilie_text>
</smilie>
</smilies>
<smilie_categories>
<smilie_category id="ro-chan" title="ro-chan" display_order="1"/>
</smilie_categories>
<smilies smilie_category_id="ro-chan">
<smilie title="b1" display_order="1" display_in_editor="1">
<image_url>https://lh3.googleusercontent.com/-dqj-1Y4trJI/WYsTWUJbJ7I/AAAAAAAAAKg/BFD860a7CL4FhTlziRej2v1OYPPlHTwdgCHMYCw/s0/b-chan01.jpg</image_url>
<smilie_text>:kqt1:</smilie_text>
</smilie>
</smilies>
</smilies_export>
我希望它是这样的:
$codes = array($smilie_text);
$smileys = array($image_url);
in array $smilie_text & $image_url = (string1,string2,string3....)
查找 image_url & smilie_text 元素的所有 url
我在 Whosebug 上尝试了很多代码,但似乎没有找到我需要的东西。 谁能帮帮我?
您需要按标签名称使用 DOMDocument
class to get data from xml. Use getElementsByTagName()
到 select 元素,然后遍历 dom 结果并获取 selected 元素的文本。
$doc = new DOMDocument();
$doc->loadXML($xml);
$nodes = $doc->getElementsByTagName("image_url");
$image_url = [];
foreach($nodes as $node)
$image_url[] = $node->nodeValue;
检查结果 demo