在已知參數名的情況下,獲取參數值,使用html' target='_blank'>正則表達式能很容易做到。
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方法把匹配的結果存放在第三個指定的參數中,是一個二維數組。第一維度是分組信息的數組,即第一個數組存放的是所有匹配的完整字符串,第二個數組存放的是第一個()對應的值得,第二維度是分組的值。
以上就是js獲取url中參數名的實例教程的詳細內容,html教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答