Отображать содержимое только из определенного тега и игнорировать другие

#php #strip-tags

#php #разделять теги

Вопрос:

У меня есть пользовательская система генерации тегов для XML. Я использую пользовательский PHP. Здесь я могу добавлять пользовательские теги XML и добавлять его функциональность. Чего я хочу добиться, так это того, что я хотел бы отображать содержимое дисплея только из определенного тега. Проверьте следующий код, если мой:

 <?xml version="1.0" encoding="UTF-8"?>
<jsaonthego>
  <jobdetails>
    <templateversion>1</templateversion>
    <title>Testing Title</title>
    <taskdetails>Testing Details</taskdetails>
  </jobdetails>
<cem>
    <item>999</item>
</cem>

</jsaonthego>
  

Из приведенного выше кода я хотел бы показать только «Testing Title», но не что-либо еще.

Пока я использую следующий код без какой-либо удачи.

 <?php
$result = preg_replace('/<jsaonthego<jobdetails<templateversion<taskdetails<cem<itemb[^>]*>(.*?)</jsaonthego>item>taskdetails>templateversion>jobdetails>cem>/i', '', $title);
echo $result;
?>
  

Заранее спасибо.

Комментарии:

1. Не возитесь с XML с регулярными выражениями; используйте правильный анализатор XML / DOM.

2. Мне нужно было выполнить в соответствии с требованиями клиента.

3. Я не могу поверить, что кто-то готов платить деньги, чтобы специально анализировать XML, избегая синтаксических анализаторов XML. Является ли это школьным заданием в дополнение к уроку регулярных выражений? В этом нет ничего плохого, но нам нужен реальный контекст, чтобы правильно отвечать на вопросы.

4. Кстати, причина, по которой ваше регулярное выражение не работает, заключается в том, что вы в основном составляете синтаксис: <jsaonthego<jobdetails<templateversion

Ответ №1:

PHP имеет несколько встроенных XML-библиотек. Для этого варианта использования я бы выбрал SimpleXML:

 $jsaonthego = simplexml_load_string($xml);
echo $jsaonthego->jobdetails->title;
  

(демо)