Я новичок в 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'} -> {'account-name'}. Я получил "синтаксическая ошибка, неожиданный T_CONSTANT_ENCAPSED_STRING". Извините, если я недостаточно подробно изложил свой первоначальный вопрос
Ваш XML недействителен <image><image/>. Как вы его загружаете?
Изображения поступают после еще одного раунда сопоставления постобработки с набором идентификаторов. Я сделал резервную копию количества тегов, к которым я пытался получить доступ, и заставил его работать, так что, возможно, он отключился, когда он стал достаточно глубоким, чтобы увидеть эту проблему <image> </image>






Согласно раздел базового использования 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. Может быть, это основная проблема?
simplexml_load_string() возвращает SimpleXMLElement, поэтому он будет эквивалентен коду в моем ответе. Я бы убедился, что вы используете правильную форму кавычек - они иногда заменяются галочками или другими пометками, особенно при копировании.
Отлично, спасибо! Я избавился от всего постороннего кода и заменил кавычки, и это сработало - по крайней мере, для одного поля с дефисом.
$home->{'pub-code'}->{'ad-type'}- это правильный синтаксис, и вам нужно уточнить, как он «не работал».