【问题标题】:PHP - Dealing with dashes in RSSPHP - 处理 RSS 中的破折号
【发布时间】:2018-03-14 19:38:43
【问题描述】:

我对 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-&gt;{'pub-code'}-&gt;{'ad-type'} 是正确的语法,您需要详细说明它是如何“不起作用”的。
  • 嗯...好吧。一旦我将其改回:.$home->{'pub-code'}->{'ad-type'}->{'account-name'}。我收到“语法错误,意外的 T_CONSTANT_ENCAPSED_STRING”。抱歉,如果我在最初的问题中没有提供足够的细节
  • 您的 XML 无效 &lt;image&gt;&lt;image/&gt;。你是怎么加载的?
  • 图像是在对一组 id 进行另一轮后处理匹配后进入的。我备份了我试图访问的标签数量并让它正常工作,所以当它足够深以看到 问题时它可能会跳闸

标签: php xml syntax rss escaping


【解决方案1】:

根据basic usage section for SimpleXML

访问 XML 文档中不包含字符的元素 根据 PHP 的命名约定(例如连字符)允许 通过将元素名称封装在大括号和 撇号。

示例 #3 获取&lt;line&gt;

<?php include 'example.php';

$movies = new SimpleXMLElement($xmlstr);

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

这依赖于 PHP 的 "variable variables" 功能。

【讨论】:

  • 我使用 simplexml_load_string 而不是 SimpleXMLElement 创建 $topRSS 并得到:错误,意外的 T_CONSTANT_ENCAPSED_STRING。这可能是根本问题吗?
  • simplexml_load_string() 返回一个 SimpleXMLElement,因此它等同于我的答案中的代码。我会检查以确保您使用了正确形式的引号 - 它们有时会被刻度或其他标记替换,尤其是在复制粘贴时。
  • 太棒了,谢谢!我摆脱了所有无关的代码并替换了引号并且它起作用了 - 至少对于单个连字符字段。
猜你喜欢
  • 1970-01-01
  • 2014-09-12
  • 1970-01-01
  • 1970-01-01
  • 2012-02-11
  • 2021-03-26
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
相关资源
最近更新 更多