0

首先,我是 PHP 的新手,所以如果这是一个愚蠢的问题,我很抱歉,其次,如果这个标题不正确,我很抱歉。

现在,我要做的是为我玩的游戏创建一个叠加层。我的叠加代码运行良好,现在我正在处理我的 HTML 文件,该文件从网站获取信息并输出。网站上的代码如下所示:

<span id="example1">Information I want</span>
<span id="example2">More Info I want</span>
...
<span id="example3">And some more</span>

现在我要做的是创建一个 PHP 脚本,该脚本进入并按名称查找元素,并在这些跨度标签中为我提供信息。到目前为止,这是我尝试过的,但是它不起作用(不足为奇):

//Some HTML here
<?php
$doc = new DomDocument;
$doc->validateOnParse = true;
$doc->Load('www.website.com');

echo "Example1: " . $doc->getElementById('example1') . "\n";
?>
//More HTML

老实说,我不知道我在做什么。如果有人可以向我展示如何正确执行此操作的示例,或者为我指出正确的方向,我将不胜感激。

4

3 回答 3

1

您的代码似乎是正确的,但是您缺少一些东西。

首先,您的load电话实际上是在寻找一个名为“www.website.com”的文件。如果是远程文件,则必须包含http://前缀。

然后,您试图回显节点本身,而您想要它的值(即它的内容)。
试试$doc->getElementById("example1")->nodeValue吧。

那应该这样做。您可能需要添加libxml_use_internal_errors(true);,以便源文件中的任何错误都不会因 PHP 错误而破坏您的页面。另外,我建议使用loadHTMLFile而不是load,因为这对格式错误的文档更宽松。

于 2013-03-31T21:20:38.183 回答
1

打开和关闭标签之间的文本是一个文本节点。

写吧$doc->getElementById('example1')->nodeValue

于 2013-03-31T21:22:13.167 回答
1

您可以使用 getElementById:

$a = $doc->getElementById("example1"); var_dump($a); 所以你会看到你想要回显或放什么,或者什么。

您还可以将所有名称 i HTML as example[] end 然后 foreach 示例数组,因此您只需一行代码即可从示例数组中按 id 获取元素

于 2013-03-31T21:23:41.893 回答