我有一个多链接:
http://test.com/?sort=newest&v=list&paged=2
http://test.com/?paged=2&sort=newest&v=list
代码php:
$actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$actual_link = preg_replace("&paged=/\D/", "", $actual_link);
$actual_link = preg_replace("?paged=/\D/", "", $actual_link);
结果错误Warning: preg_replace(): No ending delimiter '&' found ...
如何删除?paged = xx和& paged = xx
答案 0 :(得分:0)
正则表达式必须以符号开头和结尾,例如: preg_replace(" /& paged = \ D /","",$ actual_link);. 您还必须更正变量$ actual_link: $ actual_link =" http:// {$ _SERVER [' HTTP_HOST']} {$ _SERVER [' REQUEST_URI']}&#34 ;; 没有引号会引发错误。
答案 1 :(得分:0)
试试这个:
preg_replace("/[&?]paged=\d/", "", $actual_link);
答案 2 :(得分:0)
这可以达到你想要的效果:(注意多位数字后面的+)
$link = preg_replace('/[&?]paged=\d+/', '', $link);
但是,删除&之后,http://test.com/?paged=2&sort=newest&v=list不会成为http://test.com/&sort=newest&v=list(我们在排序之前有一个无用的&)
&最后是可选的。我们可以像这样删除它:
$link = preg_replace('/[&?]paged=\d+[&]?/', '', $link);
最后,你确定要删除吗?在开始。也许你在排序之前需要它?因此http://test.com/?paged=2&sort=newest&v=list不会成为http://test.com/sort=newest&v=list,而是http://test.com/?sort=newest&v=list
在这种情况下,我们制作&可选,并且不要删除?。
$link = preg_replace('/[&]?paged=\d+[&]?/', '', $link);
明智地选择你的毒药。
答案 3 :(得分:0)
尝试这个技巧
$actual_link = "http://test.com/?sort=newest&v=list&paged=2";
$actual_link = preg_replace("/[&?]paged=\d/", "&paged=", $actual_link);
echo $actual_link;
演示
http://sandbox.onlinephpfunctions.com/code/f4d8392f4948513f8b0682081e717017eb40dea3