Как получить содержаниетег из XML в массиве с помощью php? - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть некоторые проблемы с моим 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....) 

найти все URL-адреса для элементов image_url & smilie_text

Я много пробовал кода на stackoverflow, но, похоже, я не нашел то, что мне нужно.Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 29 сентября 2018

Вам нужно использовать класс DOMDocument для получения данных из xml.Используйте getElementsByTagName() для выбора элементов по имени тега, затем просматривайте результат dom и получайте текст выбранных элементов.

$doc = new DOMDocument();
$doc->loadXML($xml);
$nodes = $doc->getElementsByTagName("image_url");

$image_url = [];
foreach($nodes as $node)
    $image_url[] = $node->nodeValue;

Проверьте результат в demo

...