如何使用 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