2013-05-06 2 views
0

Я использую cURL, чтобы получить img srcs всех тегов img, используемых на веб-сайте. Но на сайте есть много имен, указанных без имен хостов, например:Как создать рабочий img src из локального img src - PHP

<img src="/images/look.jpg" /> 
<img src="i4.ytimg.com/vi/OmliBRZUxnk/maxresdefault.jpg?feature=og" title="youtube pic" /> 

Так как же определить, какой из ЦСИ-х сделает ПОС без каких-либо манипуляций с ними, и которые один необходимо будет предваряться сайта имя хоста (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

Было бы намного проще использовать функцию 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" 
}