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

内容摘要
这篇文章主要为大家详细介绍了php 字符串所有URL地址解析示例,具有一定的参考价值,可以用来参考一下。

对php解析字符串里的所有URL地址对此感兴趣的朋友,看看idc笔记做的技术
文章正文

这篇文章主要为大家详细介绍了php 字符串所有URL地址解析示例,具有一定的参考价值,可以用来参考一下。

对php解析字符串里的所有URL地址对此感兴趣的朋友,看看idc笔记做的技术笔记!

<?php 
/**
 * php解析字符串里的所有URL地址
 *
 * @param 
 * @author php教程 www.idcnote.com
 **/
// $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));


/***   来自php教程(www.idcnote.com)   ***/

注:关于php 字符串所有URL地址解析示例的内容就先介绍到这里,更多相关文章的可以留意

代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!