0

我是simplephpdom使用此代码获取ahref 链接值:

$html = file_get_html($url);
foreach($html->find('a') as $element) $array[] = $element->href . '<br>'; 

现在,问题是如果链接以斜杠 (/) 开头,则链接将无效!

我怎样才能拥有有效的链接?

例如,链接是这样的:

<a href="/news45454.html">Test link</a>

如果我使用 phpsimpledom 代码,我将拥有:

/news45454.html

但是,我想要:

http://example.com/news45454.html

如何得到这个?

我们可以测试一下,如果链接以斜杠开头,那么添加站点 url 到它?!如何 ?

4

2 回答 2

2

基本上,您需要测试 HREF 元素是否是有效的完整 URL。如果验证通过,您可以继续将其添加到数组中。但是,如果验证失败,您需要连接基本名称(应该是网站的域)。

$html = file_get_html($url);
foreach($html->find('a') as $element) {
    if(filter_var($url, FILTER_VALIDATE_URL)) {
        // Valid URL, add to array.
        $array[] = $element->href . '<br>'; 
    } else {
        // URL is invalid, add basename.
        $array[] = basename($url) . $element->href . '<br>';
    }
}

对于其他情况(例如<a href="#">),这可能需要进行一些调整,但它应该适用于您概述的情况。

于 2014-07-29T09:37:49.133 回答
1

删除斜杠使用:

string stripcslashes ( string $str )

另请参阅PHP 手册:stripcslashes

于 2014-07-29T09:44:15.250 回答