php 字符串所有URL地址解析示例

前端之家收集整理的这篇文章主要介绍了php 字符串所有URL地址解析示例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
PHP解析字符串里的所有URL地址感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧!

<?PHP 
/**
 * PHP解析字符串里的所有URL地址
 *
 * @param 
 * @author 编程之家 jb51.cc jb51.cc
 **/
// $html        = the html on the page 
// $current_url = the full url that the html came from (only needed for $repath) 
// $repath      = converts ../ and / and // urls to full valid urls 
function pageLinks($html,$current_url = "",$repath = false){ 
	preg_match_all("/\<a.+?href=(\"|')(?!javascript:|#)(.+?)(\"|')/i",$html,$matches); 
	$links = array(); 
	if(isset($matches[2])){ 
		$links = $matches[2]; 
	} 
	if($repath && count($links) > 0 && strlen($current_url) > 0){ 
		$pathi      = pathinfo($current_url); 
		$dir        = $pathi["dirname"]; 
		$base       = parse_url($current_url); 
		$split_path = explode("/",$dir); 
		$url        = ""; 
		foreach($links as $k => $link){ 
			if(preg_match("/^\.\./",$link)){ 
				$total = substr_count($link,"../"); 
				for($i = 0; $i < $total; $i++){ 
					array_pop($split_path); 
				} 
				$url = implode("/",$split_path) . "/" . str_replace("../","",$link); 
			}elseif(preg_match("/^\/\//",$link)){ 
				$url = $base["scheme"] . ":" . $link; 
			}elseif(preg_match("/^\/|^.\//",$link)){ 
				$url = $base["scheme"] . "://" . $base["host"] . $link; 
			}elseif(preg_match("/^[a-zA-Z0-9]/",$link)){ 
				if(preg_match("/^http/",$link)){ 
					$url = $link; 
				}else{ 
					$url       = $dir . "/" . $link; 
				} 
			} 
			$links[$k] = $url; 
		} 
	} 
	return $links; 
} 
header("content-type: text/plain"); 
$url = "http://*"; 
$html = file_get_contents($url); 
// Gets links from the page: 
print_r(pageLinks($html));
// Gets links from the page and formats them to a full valid url: 
print_r(pageLinks($html,$url,true));


/***   来自编程之家 jb51.cc(jb51.cc)   ***/
原文链接:https://www.f2er.com/php/528742.html

猜你在找的PHP相关文章