0

我正在使用 cURL 来获取网站中使用的所有 img 标签的 img src。但是该网站有许多未指定主机名的名称,例如:

<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; {   

}

但效果不是很好。我该怎么办?

4

1 回答 1

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"
}
于 2013-05-06T15:39:19.753 回答