Home > php教程 > php手册 > body text

php 从url中提取参数名和参数值实例

WBOY
Release: 2016-05-25 16:44:29
Original
2044 people have browsed it

如果我使用的是动态url后面会带上如a.php?a=1&b=2这种,那么我要提取a,b参数名与参数值要怎么操作呢,下面我来介绍一个自己用的实例.

在已知参数名的情况下,获取参数值,使用正则表达式能很容易做到,js的实现方法如下,代码如下:

<?php
function getValue(url, name) {
    var reg = new RegExp(&#39;(?|&)&#39; + name + &#39;=([^&?]*)&#39;, &#39;i&#39;);
    var arr = url . match(reg);
    if (arr) {
        return arr[2];
    }
    return null;
}
?>
Copy after login

如果想获取所有的参数名和其对应的值,同样也可以使用正则表达式的方法,js实现方法,代码如下:

<?php
function getKeyValue(url) { 
 var result = {}; 
 var reg = new RegExp(&#39;([?|&])(.+?)=([^&?]*)&#39;, &#39;ig&#39;); 
 var arr = reg.exec(url); 
 while (arr) { 
  result[arr[2]] = arr[3]; 
  arr = reg.exec(url); 
 } 
 return result; 
}
?>
Copy after login

注意在js中用于匹配的还有一个叫match,match是字符串的方法,而exec是RegExp对象的方法,使用字符串的match方法,同时正则表达式指定为全局匹配,那么正则表达式中的分组将没有用,返回的结果是所有匹配正则表达式的子字符串,exec方法没有使用全局匹配标志时,返回的时间第一个匹配的子字符,如果使用了全局匹配标志,第一次执行从头开始匹配符号的字符串,再次调用,就从上一次匹配结果后开始匹配.

下面提供php的实现方法,代码如下:

<?php
function getKeyValue($url) {
    $result = array();
    $mr = preg_match_all(&#39;/(?|&)(.+?)=([^&?]*)/i&#39;, $url, $matchs);
    if ($mr !== FALSE) {
        for ($i = 0; $i < $mr; $i++) {
            $result[$matchs[2][$i]] = $matchs[3][$i];
        }
    }
    return $result;
}
?>
Copy after login

php的preg_match_all方法把匹配的结果存放在第三个指定的参数中,是一个二维数组,第一维度是分组信息的数组,即第一个数组存放的是所有匹配的完整字符串,第二个数组存放的是第一个()对应的值得,第二维度是分组的值.


永久链接:

转载随意!带上文章地址吧。

source:php.cn
Statement of this Website
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
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!