解析URL得到相應(yīng)參數(shù)

載錄于:http://www.jb51.net/article/73900.htm

下面一段代碼是php解析url并得到url中的參數(shù),代碼如下所示:

$url = 'http://www.baidu.com/index.php?m=content&c=index&a=lists&catid=6&area=0&author=0&h=0?ion=0&s=1&page=1';

$arr = parse_url($url);

var_dump($arr);

$arr_query = convertUrlQuery($arr['query']);

var_dump($arr_query);

var_dump(getUrlQuery($arr_query));

/**

* 將字符串參數(shù)變?yōu)閿?shù)組

* @param $query

* @return array array (size=10)

'm' => string 'content' (length=7)

'c' => string 'index' (length=5)

'a' => string 'lists' (length=5)

'catid' => string '6' (length=1)

'area' => string '0' (length=1)

'author' => string '0' (length=1)

'h' => string '0' (length=1)

'region' => string '0' (length=1)

's' => string '1' (length=1)

'page' => string '1' (length=1)

*/

function convertUrlQuery($query)

{

$queryParts = explode('&', $query);

$params = array();

foreach ($queryParts as $param) {

$item = explode('=', $param);

$params[$item[0]] = $item[1];

}

return $params;

}

/**

* 將參數(shù)變?yōu)樽址?/p>

* @param $array_query

* @return string string 'm=content&c=index&a=lists&catid=6&area=0&author=0&h=0?ion=0&s=1&page=1' (length=73)

*/

function getUrlQuery($array_query)

{

$tmp = array();

foreach($array_query as $k=>$param)

{

$tmp[] = $k.'='.$param;

}

$params = implode('&',$tmp);

return $params;

}

下面通過四種實例給大家介紹php url 參數(shù)獲取方式。

在已知URL參數(shù)的情況下,我們可以根據(jù)自身情況采用$_GET來獲取相應(yīng)的參數(shù)信息($_GET['name']);那,在未知情況下如何獲取到URL上的參數(shù)信息呢?

第一種、利用$_SERVER內(nèi)置數(shù)組變量

相對較為原始的$_SERVER['QUERY_STRING']來獲取,URL的參數(shù),通常使用這個變量返回的會是類似這樣的數(shù)據(jù):name=tank&sex=1

如果需要包含文件名的話可以使用$_SERVER["REQUEST_URI"](返回類似:/index.php?name=tank&sex=1)

第二種、利用pathinfo內(nèi)置函數(shù)

代碼如下:


$test = pathinfo("http://localhost/index.php");

print_r($test);

/*

結(jié)果如下

Array

(

[dirname] => http://localhost //url的路徑

[basename] => index.php //完整文件名

[extension] => php //文件名后綴

[filename] => index //文件名

)

*/

?>

第三種、利用parse_url內(nèi)置函數(shù)

代碼如下:


$test = parse_url("http://localhost/index.php?name=tank&sex=1#top");

print_r($test);

/*

結(jié)果如下

Array

(

[scheme] => http //使用什么協(xié)議

[host] => localhost //主機(jī)名

[path] => /index.php //路徑

[query] => name=tank&sex=1 // 所傳的參數(shù)

[fragment] => top //后面根的錨點

)

*/

?>

第四種、利用basename內(nèi)置函數(shù)

代碼如下:


$test = basename("http://localhost/index.php?name=tank&sex=1#top");

echo $test;

/*

結(jié)果如下

index.php?name=tank&sex=1#top

*/

?>

另外,還有就是自己通過正則匹配的處理方式來獲取需要的值了。這種方式較為精確,效率暫不考慮。。。

下面拓展實踐下正則處理方式:

代碼如下:


preg_match_all("/(\w+=\w+)(#\w+)?/i","http://localhost/index.php?name=tank&sex=1#top",$match);

print_r($match);

/*

結(jié)果如下

Array

(

[0] => Array

(

[0] => name=tank

[1] => sex=1#top

)

[1] => Array

(

[0] => name=tank

[1] => sex=1

)

[2] => Array

(

[0] =>

[1] => #top

)

)

*/

?>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,537評論 19 139
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗。 張土汪:刷leetcod...
    土汪閱讀 12,899評論 0 33
  • ¥開啟¥ 【iAPP實現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 7,317評論 0 17
  • 日光下我的名字叫影子 亦或是 游弋在孤獨里的鬼 全世界的燈火闌珊 我卻看不見 眼里的星辰 慢慢 成了螢火之光 在最...
    你的名字我的姓氏baymax閱讀 273評論 0 0
  • “菊花黃,遍地香,打下菊花來充倉。菊花酒,香醇長,菊花枕頭好清涼……” 每當(dāng)山菊花在萬物肅然的剎那,攻陷所有的溝溝...
    張先萍閱讀 367評論 1 3

友情鏈接更多精彩內(nèi)容