【问题标题】:How can i get these HTML/XML-Tags as a String via PHP?如何通过 PHP 将这些 HTML/XML 标记作为字符串获取?
【发布时间】:2013-11-25 00:32:42
【问题描述】:

我需要一些表值作为我的 php 脚本中的字符串。

HTML 文件如下所示:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">

...

<body>

....

<div class="page">
<div class="content">
<div class="left">
<table class="info_table">
<tbody>
<tr id="info_id_352">
        <td class="info_iddata"><a href="Ice-Tea">Icetea</a></td>
        <td style="width: 32px;"><div class="enough_available"></div></td>
        <td class="drink-status drink-enoughavailable">Available</td>
</tr>
</tbody>
</table>

...

</div>
</div>
</div>
</body>
</html>

这里我需要以下 XML 标记和值:

发件人:

  • a-href-link 的值(在本例中为值“Icetea”)
  • 第二个字段的 xml-tag(在本例中为“enough_available”)
  • xml-tag 和第三个字段的值(这里:“drink-status drink-enoughavailable”和“Available”

我用以下几行尝试了这个(第一个值“IceTea”):

$pagestring = file_get_contents("./index.html");
$drinkxml = new DOMDocument();
$drinkxml->loadHTML($pagestring);
$drinkxml->getElementsByTagNameNs('info_id_352', '*') as $tr ;
echo current($tr->getElementsByTagName('a'))->nodeValue;

通过这些行,我在 shell 上得到以下 php 错误:

PHP Parse error:  syntax error, unexpected T_AS in /home/phpscripts/bin/drinkstatus/php/drinkstatus.php on line 44

有没有人获取 xml 值和类名的提示?

【问题讨论】:

  • $drinkxml-&gt;getElementsByTagNameNs('info_id_352', '*') as $tr ; --- 是什么意思?你在哪里见过as这样的运算符用法?
  • 嗨 - 我试图找到一些答案并找到了这个页面:forums.devshed.com/php-development-5/… 我发现结果不是字符串,而是一个 DOMNodeList,所以我尝试使用代码此页面上的示例以将其作为字符串 - 经过多次编辑和尝试后,我得到了这些代码行......答案是我不确定......

标签: php html xml


【解决方案1】:
$drinkxml->getElementsByTagNameNs('info_id_352', '*') as $tr ;

是语法错误,因为 'as' 不是 foreach 条件之外的关键字。尝试分配 tr:

$tr = $drinkxml->getElementsByTagNameNs('info_id_352', '*');

GetElementsByTagNameNs 返回一个节点列表对象,因此它应该适用于下一个方法调用。

http://php.net/manual/en/domelement.getelementsbytagnamens.php

【讨论】:

  • 这里有回声吗? :p 如果你读了我的回答,你会看到我说的完全一样——这又带来了另一个问题......
  • 对不起,迈克,我只是在这里打电话,没有看到你的回答。
【解决方案2】:

我假设错误,第 44 行,指向这一行:
$drinkxml-&gt;getElementsByTagNameNs('info_id_352', '*') as $tr ;

您不能以这种方式使用“as”。如果您正在创建 FOR EACH 循环,您会想要这样做。但除此之外,nadda。

尝试创建一个变量...将上面的行替换为下面的行:

$tr = $drinkxml->getElementsByTagNameNs('info_id_352', '*');

【讨论】:

  • 我假设错误,第 44 行,指向这一行:--- 是的,你是对的。使用您的行(现在是第 45 行)后,我收到此错误(回显行是第 46 行):PHP 致命错误:调用 /home/phpscripts/bin/drinktatus/php/drinkstatus2 中未定义的方法 DOMNodeList::getElementByTagName()。 php 在第 46 行
  • 你用我的新线替换了这条线,对吧?替换,不要添加。
  • 当然——我将旧行注释掉 (#) 并改用您的行。现在我有了最初问题的前三行 php 行,你的行和 echo-line 来查看 的内容
  • 尝试使用这个作为回声线,我无法测试,但我认为-&gt;nodeValue 应该在括号内...echo current($tr-&gt;getElementsByTagName('a')-&gt;nodeValue);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-20
  • 1970-01-01
  • 1970-01-01
  • 2014-01-05
  • 1970-01-01
相关资源
最近更新 更多