PHP - Работа с дефисами в RSS

Я новичок в PHP, но я пытаюсь проанализировать части RSS-канала для преобразования в HTML. Проблема в том, что почти в каждом теге в фиде есть тире, и с этим трудно справиться. Я пробовал сделать что-то вроде $ home -> {'pub-code'} -> {'ad-type'} и т. д., Но это тоже не сработало. На данный момент у меня есть следующее:

    foreach ( $topRSS->channel->item as $home ) 
         {$returnValue .= "<li><span class=\"Title\">".$home->pub-code->ad-type->account-name."</span><br><a class=\"Link\" href=\"#\">".$home->pub-code->ad-type->ad-content."</a></li>";
         $counter++;
         if ($counter > 4)
             break;
         }

который представляет собой попытку перебора RSS-канала с элементами, которые выглядят так:

 <item>
  <pub-code>
    <ad-type>
      <cat-code>Jobs</cat-code>
      <class-code/>
      <ad-number>12345</ad-number>
      <ad-number>12345</ad-number>
      <start-date>03/14/2018</start-date>
      <image><image/>
      <account-number>12345</account-number>
      <account-name>GENE BROWN</account-name>
      <addr-1>12533 WALSINGHAM RD</addr-1>
      <addr-2/>
      <city>LARGO</city>
      <state>FL</state>
      <postal-code>33774</postal-code>
      <ad-content> Content</ad-content>
    </ad-type>
  </pub-code>
 </item>

Я уверен, что это простой синтаксис, но мне нигде не удается найти документацию по нему.

Любая помощь будет принята с благодарностью.

Спасибо!

$home->{'pub-code'}->{'ad-type'} - это правильный синтаксис, и вам нужно уточнить, как он «не работал».
Sammitch 14.03.2018 20:42

да ... ладно. Как только я снова изменил его на:. $ Home -> {'pub-code'} -> {'ad-type'} -> {'account-name'}. Я получил "синтаксическая ошибка, неожиданный T_CONSTANT_ENCAPSED_STRING". Извините, если я недостаточно подробно изложил свой первоначальный вопрос

G. Smith 14.03.2018 20:46

Ваш XML недействителен <image><image/>. Как вы его загружаете?

Syscall 14.03.2018 20:56

Изображения поступают после еще одного раунда сопоставления постобработки с набором идентификаторов. Я сделал резервную копию количества тегов, к которым я пытался получить доступ, и заставил его работать, так что, возможно, он отключился, когда он стал достаточно глубоким, чтобы увидеть эту проблему <image> </image>

G. Smith 14.03.2018 21:04
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Согласно раздел базового использования SimpleXML:

Accessing elements within an XML document that contain characters not permitted under PHP's naming convention (e.g. the hyphen) can be accomplished by encapsulating the element name within braces and the apostrophe.

Example #3 Getting <line>

<?php include 'example.php';

$movies = new SimpleXMLElement($xmlstr);

echo $movies->movie->{'great-lines'}->line; ?>

Это зависит от функциональности PHP "переменные переменные".

Я использую simplexml_load_string вместо SimpleXMLElement для создания $ topRSS и получения: error, неожиданного T_CONSTANT_ENCAPSED_STRING. Может быть, это основная проблема?

G. Smith 14.03.2018 20:50
simplexml_load_string() возвращает SimpleXMLElement, поэтому он будет эквивалентен коду в моем ответе. Я бы убедился, что вы используете правильную форму кавычек - они иногда заменяются галочками или другими пометками, особенно при копировании.
John Ellmore 14.03.2018 20:54

Отлично, спасибо! Я избавился от всего постороннего кода и заменил кавычки, и это сработало - по крайней мере, для одного поля с дефисом.

G. Smith 14.03.2018 20:59

Другие вопросы по теме