如何将从$_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解决方案。
答案 0 :(得分:1)
我可以想到你可以做的两件事(可能不会直接解决你的问题,但会帮助你解决问题):
$_SERVER['REQUEST_URI']
不包含您的想法。试试echo
或var_dump
,看看它是否符合您的期望。error_reporting()
启用它。另请注意,DOMDocument
仅解析HTML,如果您使用客户端语言或CSS伪元素生成并添加到页面的动态DOM节点,除非您部署JS,否则它们不会显示/ CSS解析器(这不是一件容易的事)。