php截取字符串中的链接参数

php截取字符串中的链接参数,如下例子

$str=http://localhost/aaa.php?a=12&b=22&c=33

我但愿获得个中变量b的值,即22,怎么写,&b=22也大概排在最后,即没有&c=33了。

这一是种写法,纵然用正则

<?php $str="http://localhost/aaa.php?a=12&b=22&c=33"; preg_match('/b=([^&]*)/is', $str, $s); echo $s[1]; ?>

这是另种写法,不利用正则

<?php $str="http://localhost/aaa.php?a=12&b=22&c=33"; $s=parse_url($str); $s=$s[query]; $s=explode("&", $s); $s=$s[1]; $s=str_replace("b=","", $s); echo $s; ?>

哪种较量好呢

主要是看效率了,

以下是做效率测试的例子,举办1000次运算的时间:

1、利用正则的测试代码:

<?php define('START_TIME',microtime(true)); for($n=0;$n<1000;$n++) { $str="http://localhost/aaa.php?a=12&b=22&c=33"; preg_match('/b=([^&]*)/is', $str, $s); //echo $s[1]; } echo (microtime(true) - START_TIME).'s'; ?>

功效平均值:0.00377011299133s

2、不利用正则

<?php define('START_TIME',microtime(true)); for($n=0;$n<1000;$n++) { $str="http://localhost/aaa.php?a=12&b=22&c=33"; $s=parse_url($str); $s=$s[query]; $s=explode("&", $s); $s=$s[1]; $s=str_replace("b=","", $s); //echo $s; } echo (microtime(true) - START_TIME).'s'; ?>

功效平均值:0.00953912734985s

照旧可以看得出,在这个例子中利用正则照旧较量有效率的,主要是代码少,而且正则没回朔,也就是正则的优化做得好。

不是说正则很不效率,要用就要好好地优化它。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/7937.html