2012-05-08 102 views
1

我正在抓取像Facebook一样的网址。对于该页面中的所有图像,我可以使用PHP获取完整图像属性

$src = $tag->getAttribute('src'); 

如果外部网站将全网页路径放到他们的图像上,它可以正常工作。但有时他们只使用相对路径,并返回一个破碎的图像。

由于我有完整的网址,有没有办法检查$ src是否包含http://https

如果没有的话,我可以做

$src = $link . '/' . $src; 

对于那些相对图像。我试过了,它们显示。但是,如果他们已经拥有了它,那么它们将不会显示为包含双重网址的路径。

回答

2

使用strpos

if(strpos($src,'http://')===0 || strpos($src,'https://')===0){ 
    // full url provided 
}else{ 
    // add domain here 
} 

请注意,您必须使用===,而不是仅仅==区分返回值false(未找到)和0(在位置0中)。

+0

我会倾向于只检查'=== 0' – Phil

+0

@Phil:感谢您的提示 - 我只是改变了一秒之前:D – oezi

+0

完美。谢谢。还有一个问题。我使用if(strpos($ src,'http://')=== 0 || strpos($ src,'https://')=== 0){ $ data [$ index] [' src'] = $ src; } else { $ data [$ index] ['src'] = $ link。 '/'。 $ SRC; }现在有时他们会在相对路径中放入一个'/'。那么如何避免在新的$ src中使用双斜线? – lionel28

0

嗨,您可以使用parse_url

<?php 
$url = parse_url('https://example.org'); 

if($url['scheme'] == 'https'){ 
    // is https; 
} 

>

感谢

+1

请注意,如果URL是相对的,'$ url ['scheme']'不会存在,代码将引发“未定义索引”通知。首先使用['isset()'](http://php.net/isset)或['empty()'](http://php.net/empty)以确保'scheme'确实存在。 – rid

+0

@Radu:谢谢你的评论,你可以请deifne我的意思是url是相对的。再次感谢...:-) –