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

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

要撮利用js獲取url中參數名也參數值這個很少見了,但我今天須要這樣操做,下面我來給你們介紹一下具體的實例方法。
 


在已知參數名的狀況下,獲取參數值,使用正則表達式能很容易作到。正則表達式


js的實現方法以下:數組

 代碼以下 複製代碼

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

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

 return null;
}spa

.net

方法一:正則分析法對象

 

 代碼以下 複製代碼

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;    
}blog

這樣調用:ci

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方法把匹配的結果存放在第三個指定的參數中,是一個二維數組。第一維度是分組信息的數組,即第一個數組存放的是全部匹配的完整字符串,第二個數組存放的是第一個()對應的值得,第二維度是分組的值。

相關文章
相關標籤/搜索