Home >php教程 >php手册 >从url中提取参数名和参数值

从url中提取参数名和参数值

WBOY
WBOYOriginal
2016-06-07 11:43:251215browse

在已知参数名的情况下,获取参数值,使用正则表达式能很容易做到。
网上Copy过来的方法,觉得挺好的,有js版本,php版本。
在已知参数名的情况下,获取参数值,使用正则表达式能很容易做到。js的实现方法如下:function getValue(url, name) {<br>     var reg = new RegExp('(\\?|&)' + name + '=([^&?]*)', 'i');<br>     var arr = url.match(reg);<br> <br>     if (arr) {<br>         return arr[2];<br>     }<br> <br>     return null;<br> }如果想获取所有的参数名和其对应的值,同样也可以使用正则表达式的方法,js实现方法:function getKeyValue(url) {<br>     var result = {};<br>     var reg = new RegExp('([\\?|&])(.+?)=([^&?]*)', 'ig');<br>     var arr = reg.exec(url);<br> <br>     while (arr) {<br>         result[arr[2]] = arr[3];<br> <br>         arr = reg.exec(url);<br>     }<br> <br>     return result;<br> }注意在js中用于匹配的还有一个叫match,match是字符串的方法,而exec是RegExp对象的方法。使用字符串的match方法,同时正则表达式指定为全局匹配,那么正则表达式中的分组将没有用,返回的结果是所有匹配正则表达式的子字符串。exec方法没有使用全局匹配标志时,返回的时间第一个匹配的子字符,如果使用了全局匹配标志,第一次执行从头开始匹配符号的字符串,再次调用,就从上一次匹配结果后开始匹配。


下面提供php的实现方法:function getKeyValue($url) {<br>     $result = array();<br>     $mr = preg_match_all('/(\?|&)(.+?)=([^&?]*)/i', $url, $matchs);<br> <br>     if ($mr !== FALSE) {<br>         for ($i = 0; $i              $result[$matchs[2][$i]] = $matchs[3][$i];<br>         }<br>     }<br> <br>     return $result;<br> }php的preg_match_all方法把匹配的结果存放在第三个指定的参数中,是一个二维数组。第一维度是分组信息的数组,即第一个数组存放的是所有匹配的完整字符串,第二个数组存放的是第一个()对应的值得,第二维度是分组的值。

AD:真正免费,域名+虚机+企业邮箱=0元

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn