2011-08-20 58 views
1

首先html页面,我知道我能得到一个网页与HTML:我如何获得该连接件与PHP

file_get_contents($url); 

我所试图做的就是特定链接元素在页面中(在头部找到)。

e.g:

<link type="text/plain" rel="service" href="/service.txt" /> (the element could close with just >) 

我的问题是:我怎样才能像用“相对”特定元素属性等于“服务”这样我就可以在href?

我的第二个问题是:我是否也应该获得“base”元素?它是否适用于“链接”元素?我正在努力遵循标准。

另外,html可能有错误。我无法控制我的用户如何在那里编写代码。

回答

3

使用PHP的DOMDocument,这应该这样做(未经测试):

$doc = new DOMDocument(); 
$doc->loadHTML($file); 
$head = $doc->getElementsByTagName('head')->item(0); 
$links = $head->getElementsByTagName("link"); 
foreach($links as $l) { 
    if($l->getAttribute("rel") == "service") { 
     echo $l->getAttribute("href"); 
    } 
} 
+0

不loadHTMLFile但loadHTML(我想装从网页)$ head.get [...] - > $头戴式>获取[...]反正,谢谢! – jnbdz

0

你应该得到Base元素,但知道它是如何工作的,它的范围。

事实上,当我不得不屏幕刮,我使用phpquery。这是jQuery的一个较老的PHP端口...以及这听起来像是一个愚蠢的概念,它对于文档遍历来说非常棒......并且不需要格式良好的XHTMl。

http://code.google.com/p/phpquery/

0

我与Selenium的Java下工作网络的应用程序测试。它为使用CSS选择器的文档遍历提供了非常好的功能。

看看How to use Selenium with PHP
但是如果你只想提取这一个链接,这个设置可能会让你的需求变得复杂。