在已知參數(shù)名的情況下,獲取參數(shù)值,使用html' target='_blank'>正則表達(dá)式能很容易做到。
js的實(shí)現(xiàn)方法如下:
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;
}
這樣調(diào)用:
alert(GetQueryString( 參數(shù)名1 ));
alert(GetQueryString( 參數(shù)名2 ));
alert(GetQueryString( 參數(shù)名3 ));
如果想獲取所有的參數(shù)名和其對(duì)應(yīng)的值,同樣也可以使用正則表達(dá)式的方法,
js實(shí)現(xiàn)方法:
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中用于匹配的還有一個(gè)叫match,match是字符串的方法,而exec是RegExp對(duì)象的方法。使用字符串的match方法,同時(shí)正則表達(dá)式指定為全局匹配,那么正則表達(dá)式中的分組將沒有用,返回的結(jié)果是所有匹配正則表達(dá)式的子字符串。exec方法沒有使用全局匹配標(biāo)志時(shí),返回的時(shí)間第一個(gè)匹配的子字符,如果使用了全局匹配標(biāo)志,第一次執(zhí)行從頭開始匹配符號(hào)的字符串,再次調(diào)用,就從上一次匹配結(jié)果后開始匹配。
下面提供php的實(shí)現(xiàn)方法:
代碼如下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方法把匹配的結(jié)果存放在第三個(gè)指定的參數(shù)中,是一個(gè)二維數(shù)組。第一維度是分組信息的數(shù)組,即第一個(gè)數(shù)組存放的是所有匹配的完整字符串,第二個(gè)數(shù)組存放的是第一個(gè)()對(duì)應(yīng)的值得,第二維度是分組的值。
以上就是js獲取url中參數(shù)名的實(shí)例教程的詳細(xì)內(nèi)容,html教程
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。
新聞熱點(diǎn)
疑難解答