如何将获取的 URL 加载$_SERVER['REQUEST_URI']
到 domDocument 中?
我正在尝试将动态网页加载到 DOMDocument 中以解析某些单词。最终,我想为我的网站(Tiki Wiki CMS)创建一个词汇表。我开始非常简单,现在我只是尝试加载页面并解析文本以进行测试。我是 DOMDocument 的新手,在阅读了本网站和 PHP 手册上的几篇文章后,我知道我必须使用 加载一个 html 页面,然后通过或loadHTMLFile
解析该网站才能使用它。它适用于静态页面,但我遇到的主要问题是我无法在 中输入静态 url ,因为应该在用户上传网站时执行解析。getElementsById
getElementsByTagName
loadHTMLFile
这是DID工作的代码:
$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;
}
所以,我想我可以使用 $_SERVER['REQUEST_URI'] 来完成这项工作,但它没有用。
这不起作用(没有错误消息):
$url = $_SERVER['REQUEST_URI'];
$dom = new DOMDocument;
$dom->loadHTMLFile($url);
$a = $dom->getElementsByTagName('a');
foreach ($a as $link) {
echo $link->nodeValue;
}
在检查了 $url 输出是什么之后,我决定添加http://mysite.org
它以使其与有效的 url 相同。但是,也没有运气,这次我遇到了内部服务器错误。
这也不起作用(内部服务器错误):
$url = 'http://mysite.org' . $_SERVER['REQUEST_URI'];
$dom = new DOMDocument;
$dom->loadHTMLFile($url);
$a = $dom->getElementsByTagName('a');
foreach ($a as $link) {
echo $link->nodeValue;
}
我想我在这里遗漏了一些实质性的东西,我认为可能无法以这种方式使用 DOMDocument,所以我再次在网上搜索帮助(如果可以将 $_SERVER['REQUEST_URI'] 与DOMdocument),但我没有找到答案。所以我希望这里的任何人都可以提供帮助。包括第三方解析器等在内的任何建议都会有所帮助,但需要使用正则表达式解析的任何内容除外。Tiki Wiki CMS 已经有一个用正则表达式完成的词汇表选项,但它非常有问题。
谢谢。
更新
我还没有找到问题的答案,但我想我知道我的错误在哪里。我期待$_SERVER['REQUEST_URI']
在尚未完全构建的动态页面上运行。我在主设置页面上运行了脚本,所以当我试图指向它时,我猜想 html 尚未呈现$_SERVER['REQUEST_URI']
。当我注意到这可能是问题时,我放弃了使用 DomDocument 解析文档的想法,并使用了可以在文档准备好后加载的 javascript 解决方案。