1. 程式人生 > >js獲取url中引數名也引數值

js獲取url中引數名也引數值

本文轉載於:猿2048網站➯js獲取url中引數名也引數值

要撮利用js獲取url中引數名也引數值這個不多見了,但我今天需要這樣操作,下面我來給大家介紹一下具體的例項方法。  


在已知引數名的情況下,獲取引數值,使用正則表示式能很容易做到。


js的實現方法如下:

 程式碼如下 複製程式碼

function getValue(url, name) {
 var reg = new RegExp('(\?|&)' + name + '=([^&?]*)', 'i');
 var arr = url.match(reg);

 if (arr) {
  return arr[2];
 }

 return null;
}

方法一:正則分析法

 

 程式碼如下 複製程式碼

function getQueryString(name) {    
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");    
var r = window.location.search.

substr(1).match(reg);    
if (r != null) return unescape(r[2]); return null;    
}

這樣呼叫:

alert(GetQueryString("引數名1"));
alert(GetQueryString("引數名2"));
alert(GetQueryString("引數名3"));

如果想獲取所有的引數名和其對應的值,同樣也可以使用正則表示式的方法,


js實現方法:

 程式碼如下 複製程式碼

function getKeyValue(url) {
 var result = {};
 var reg = new RegExp('([\?|&])(.+?)=([^&?]*)', 'ig');
 var arr = reg.exec(url);

 while (arr) {
  result[arr[2]] = arr[3];

  arr = reg.exec(url);
 }

 return result;
}

注意在js中用於匹配的還有一個叫match,match是字串的方法,而exec是RegExp物件的方法。使用字串的match方法,同時正則表示式指定為全域性匹配,那麼正則表示式中的分組將沒有用,返回的結果是所有匹配正則表示式的子字串。exec方法沒有使用全域性匹配標誌時,返回的時間第一個匹配的子字元,如果使用了全域性匹配標誌,第一次執行從頭開始匹配符號的字串,再次呼叫,就從上一次匹配結果後開始匹配。

下面提供php的實現方法:

 程式碼如下 複製程式碼

function getKeyValue($url) {
 $result = array();
 $mr = preg_match_all('/(?|&)(.+?)=([^&?]*)/i', $url, $matchs);

 if ($mr !== FALSE) {
  for ($i = 0; $i < $mr; $i++) {
   $result[$matchs[2][$i]] = $matchs[3][$i];
  }
 }

 return $result;
}

php的preg_match_all方法把匹配的結果存放在第三個指定的引數中,是一個二維陣列。第一維度是分組資訊的陣列,即第一個陣列存放的是所有匹配的完整字串,第二個陣列存放的是第一個()對應的值得,第二維