我正在使用cURL来获取网站中使用的所有img标签的img srcs。但该网站指定了许多没有主机名的名称,如:
<img src="/images/look.jpg" />
<img src="i4.ytimg.com/vi/OmliBRZUxnk/maxresdefault.jpg?feature=og" title="youtube pic" />
那么我如何确定哪个src将在不对其进行任何操作的情况下呈现图片,以及哪一个需要在网站的主机名(steekcoders.com)之前添加。
目前我正在尝试这个:
$url = 'http://www.steekcoders.com'; $parse='http://'.parse_url($url, PHP_URL_HOST).'/'; $reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
foreach($imgArray as $src)
{
$src=ltrim($src,"/"); if(empty($src)){ continue; }
if(!preg_match($reg_exUrl, $src))
{
$clipouts[]=$src; $req="http://".$src; $extra=$parse.$src;
$clipouts[] = $extra; $clipouts[] = $req;
}
else{ $clipouts[]=$src; {
}
但是效果并不好。我怎么能这样做呢?
答案 0 :(得分:0)
使用PHP的parse_url功能要容易得多。它返回一个关联数组,其中包含找到的所有值。你填写缺少的值,瞧!
php > var_dump(parse_url('/abc'));
array(1) {
["path"]=>
string(4) "/abc"
}
php > var_dump(parse_url('http://a.b.c/abc'));
array(3) {
["scheme"]=>
string(4) "http"
["host"]=>
string(5) "a.b.c"
["path"]=>
string(4) "/abc"
}