如何从本地img src - PHP创建一个工作的img src

时间:2013-05-06 15:34:14

标签: php

我正在使用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; {   

}

但是效果并不好。我怎么能这样做呢?

1 个答案:

答案 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"
}