PHP 正则表达式如何替换URL参数

URL:‘/index.php?main_page=index&cPath=55&pagesize=48;怎么把上面的URL里面包含的‘&pagesize=48’替换掉?... URL:‘/index.php?main_page=index&cPath=55&pagesize=48;
怎么把上面的URL里面包含的‘&pagesize=48’替换掉?

现在用的是下面的公式:
$url_without_pagesize = (isset($_GET["pagesize"])) ? ereg_replace("&pagesize=\\d*", "", $_SERVER['REQUEST_URI']) : $_SERVER['REQUEST_URI'];

但是经常出错。就只替换掉了‘&pagesize=’,48还在URL中。。。。
回复的朋友说的都没错。
非常感谢大家伙的关注,在大家的帮助下,问题得到了圆满解决。

但是百度之让我选一个,所以我选了第一个正确的答案。。。
真的很不好意思。。。。
展开
 我来答
opaquefog
2010-09-15 · TA获得超过107个赞
知道答主
回答量:27
采纳率:0%
帮助的人:10.9万
展开全部
用正则是比较笨的办法,但也给你提供一下了:

function getpage(){
//你可以把获取当前page的代码放在函数里
return 123;
}

$str = 'index.php?main_page=index&cPath=55&pagesize=48';
$ptn = '/&pagesize=(\d+)/';
$pagenum = getpage();
$rep = '&pagesize='.$pagenum;

echo $str; // 输出:index.php?main_page=index&cPath=55&pagesize=48

preg_replace($ptn,$rep,$str);

echo $str; // 输出:index.php?main_page=index&cPath=55&pagesize=123

另外多说一下,这种情况可以使用
http_build_query()
这个函数。

具体使用方法:
$u['main_page']=$_GET['main_page'];
$u['cPath']=$_GET['cPath'];
$u['pagesize']=getpage();

$url = 'index.php?'.http_build_query($u);
echo $url;

这个函数很好用,比你自己去匹配好。

参考资料: php中文手册

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0c90796
2010-09-15 · TA获得超过1611个赞
知道大有可为答主
回答量:2638
采纳率:0%
帮助的人:1093万
展开全部
<?php
$url="'/index.php?main_page=index&cPath=55&pagesize=48'";
$pos1=strpos($url,'&pagesize');//搜索&pagesize第一次出现的位置
echo substr($url,0,$pos1);//由于&pagesize=48是url的最后,所以可以截取字符串
?>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蛋壳儿漂
2010-09-15 · TA获得超过1160个赞
知道小有建树答主
回答量:433
采纳率:0%
帮助的人:601万
展开全部
考虑到需要滤掉的参数所在位置不同,如下是参考程序,你可以
只需要一句替换语句:
$strnew = preg_replace("/&pagesize=\d*|pagesize=\d*&?/","",$str);

可以看看测试效果:
$str = "'/index.php?main_page=index&cPath=55&pagesize=111'<br>'/index.php?main_page=index&pagesize=111&cPath=55'<br>'/index.php?pagesize=111&main_page=index&cPath=55'<br>'/index.php?pagesize=111'<br>";
$strnew = preg_replace("/&pagesize=\d*|pagesize=\d*&?/","",$str);
echo $str."change to<br>";
echo $strnew;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
烟暄烃34
2010-09-15 · 超过19用户采纳过TA的回答
知道答主
回答量:132
采纳率:0%
帮助的人:49.6万
展开全部
str_replace 或replace 或preg_replace
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
喜欢选择的
2010-09-15 · TA获得超过367个赞
知道小有建树答主
回答量:356
采纳率:0%
帮助的人:347万
展开全部
preg_replace('/(&|\?)pagesize=[^&]+/', '', $_SERVER['REQUEST_URI'])
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式