如何将从$ _SERVER ['REQUEST_URI']获取的URL加载到DOMDocument中?

时间:2013-10-29 16:52:14

标签: php url html-parsing domdocument

如何将从$_SERVER['REQUEST_URI']获取的网址加载到domDocument?

我正在尝试将动态网页加载到DOMDocument中以解析某些单词。最终,我想为我的网站创建词汇表(Tiki Wiki CMS)。我开始非常简单,现在我只是尝试加载页面并解析文本以进行测试。 我是DOMDocument的新手,在阅读了本网站和PHP手册上的几篇文章后,我知道我必须加载一个带loadHTMLFile的html页面,然后按getElementsById或{{1}解析网站为了做它的东西。它适用于静态页面,但我遇到的主要问题是我无法在getElementsByTagName中输入静态URL,因为应该在用户上传网站时执行解析。

以下是 DID 的代码:

loadHTMLFile

所以,我认为我可以使用$ _SERVER ['REQUEST_URI']来完成这项工作,但它没有用。

这确实 NOT 工作(没有错误消息):

$url = 'http://mysite.org/bbk/tiki-index.php?page=pagetext';
$dom = new DOMDocument;
$dom->loadHTMLFile($url);
$a = $dom->getElementsByTagName('a');

foreach ($a as $link) {
echo $link->nodeValue;
}

在检查了$ url输出后,我决定向其添加$url = $_SERVER['REQUEST_URI']; $dom = new DOMDocument; $dom->loadHTMLFile($url); $a = $dom->getElementsByTagName('a'); foreach ($a as $link) { echo $link->nodeValue; } 以使其与有效的网址相同。但是,也没有运气,这次我收到内部服务器错误。

这确实 NOT 工作(内部服务器错误):

http://mysite.org

我想我在这里遗漏了一些实质内容,我认为以这种方式使用DOMDocument可能是不可能的,所以我再次在网上寻求帮助(如果可以使用$ _SERVER ['REQUEST_URI']结合DOMdocument,但我没有找到答案。所以我希望这里有人可以提供帮助。包括第三方解析器等在内的任何建议都会有所帮助,除了需要使用正则表达式进行解析的任何内容。 Tiki Wiki CMS已经使用正则表达式完成了词汇表选项,但它非常错误。

感谢。

更新

我没有找到问题的答案,但我想我知道我的错误在哪里。我期待$url = 'http://mysite.org' . $_SERVER['REQUEST_URI']; $dom = new DOMDocument; $dom->loadHTMLFile($url); $a = $dom->getElementsByTagName('a'); foreach ($a as $link) { echo $link->nodeValue; } 在尚未完全构建的动态页面上运行。我在主设置页面上运行了脚本,所以当我尝试将$_SERVER['REQUEST_URI']指向它时,我猜想还没有呈现html。当我注意到这可能是问题时,我放弃了使用DomDocument解析文档的想法,并使用了一个可以在文档准备好后加载的javascript解决方案。

1 个答案:

答案 0 :(得分:1)

我可以想到你可以做的两件事(可能不会直接解决你的问题,但会帮助你解决问题):

  1. $_SERVER['REQUEST_URI']不包含您的想法。试试echovar_dump,看看它是否符合您的期望。
  2. 启用错误报告。您看到通用500错误页面的原因是因为禁用了错误报告。使用error_reporting()启用它。
  3. 另请注意,DOMDocument仅解析HTML,如果您使用客户端语言或CSS伪元素生成并添加到页面的动态DOM节点,除非您部署JS,否则它们不会显示/ CSS解析器(这不是一件容易的事)。