时间:2021-05-26
本文实例讲述了php解析字符串里所有URL地址的方法。分享给大家供大家参考。具体如下:
<?php// $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 urlsfunction 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 = "https://www.jb51.net";$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程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
如果直接使用base64_encode和base64_decode方法的话,生成的字符串可能不适用URL地址。下面的方法可以解决该问题:URL安全的字符串编码:
前言查询字符串模块提供了解析和格式化工具URL查询字符串的API,本文将详细介绍关于Node.js查询字符串解析querystring的相关内容,分享出来供大家
本文实例讲述了PHP使用strstr()函数获取指定字符串后所有字符的方法。分享给大家供大家参考,具体如下:PHP的strstr()函数可搜索字符串在另一字符串
本文实例讲述了php使用parse_str实现查询字符串解析到变量中的方法。分享给大家供大家参考,具体如下:parse_str()函数可实现把字符串解析到变量中
php根据定界符把字符串解析为数组一般使用explode方法实现例如:使用”,”为定界符解析字符串为数组输出:Array([0]=>1[1]=>2[2]=>3)