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中。。。。
回复的朋友说的都没错。
非常感谢大家伙的关注,在大家的帮助下,问题得到了圆满解决。
但是百度之让我选一个,所以我选了第一个正确的答案。。。
真的很不好意思。。。。 展开
怎么把上面的URL里面包含的‘&pagesize=48’替换掉?
现在用的是下面的公式:
$url_without_pagesize = (isset($_GET["pagesize"])) ? ereg_replace("&pagesize=\\d*", "", $_SERVER['REQUEST_URI']) : $_SERVER['REQUEST_URI'];
但是经常出错。就只替换掉了‘&pagesize=’,48还在URL中。。。。
回复的朋友说的都没错。
非常感谢大家伙的关注,在大家的帮助下,问题得到了圆满解决。
但是百度之让我选一个,所以我选了第一个正确的答案。。。
真的很不好意思。。。。 展开
5个回答
展开全部
用正则是比较笨的办法,但也给你提供一下了:
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;
这个函数很好用,比你自己去匹配好。
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中文手册
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<?php
$url="'/index.php?main_page=index&cPath=55&pagesize=48'";
$pos1=strpos($url,'&pagesize');//搜索&pagesize第一次出现的位置
echo substr($url,0,$pos1);//由于&pagesize=48是url的最后,所以可以截取字符串
?>
$url="'/index.php?main_page=index&cPath=55&pagesize=48'";
$pos1=strpos($url,'&pagesize');//搜索&pagesize第一次出现的位置
echo substr($url,0,$pos1);//由于&pagesize=48是url的最后,所以可以截取字符串
?>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
考虑到需要滤掉的参数所在位置不同,如下是参考程序,你可以
只需要一句替换语句:
$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;
只需要一句替换语句:
$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;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
str_replace 或replace 或preg_replace
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
preg_replace('/(&|\?)pagesize=[^&]+/', '', $_SERVER['REQUEST_URI'])
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询