Php 用于删除文本的正则表达式+;int

Php 用于删除文本的正则表达式+;int,php,regex,Php,Regex,我需要一个正则表达式来从字符串page=55&或page=77& 该字符串可以是,例如: var=104&anothervar=10&page=14&name=stack 结果应该是: var=104&anothervar=10&name=stack preg_replace的适当表达式是什么 $result = preg_replace('/\bpage=\d+&/', '', $subject); 除非您想将“var=123&subpag

我需要一个正则表达式来从字符串
page=55&
page=77&

该字符串可以是,例如:

var=104&anothervar=10&page=14&name=stack
结果应该是:

var=104&anothervar=10&name=stack
preg_replace的适当表达式是什么

$result = preg_replace('/\bpage=\d+&/', '', $subject);
除非您想将
“var=123&subpage=456&name=stack”
更改为
“var=123&subname=stack”
,否则
是必需的

示例:

$str = 'var=104&anothervar=10&page=14&name=stack';
$str = preg_replace('/&?page=\d+&?/', '', $str);
echo $str;
var=104&anothervar=104&name=stack
&page=\d+?

  • [&]?
    表示出现0或1个
    &
    字符。(如果是第一个参数“与”,且开头没有“与”)
  • \d+?
    表示在
    =
输出:

$str = 'var=104&anothervar=10&page=14&name=stack';
$str = preg_replace('/&?page=\d+&?/', '', $str);
echo $str;
var=104&anothervar=104&name=stack

您可以使用它们,然后重新组合它们,从而消除不需要的参数。(再次)不需要正则表达式。

试试preg_replace(“/page=[0-9]+\&/”,“$str)太好了,这似乎很管用,为什么你说它管用,@hjpotter的解决方案(或我的)不管用?因为它管用,而你的不管用:尽管pIt是完全相同的表达式,除了起始词边界。我知道OP提供了一个具体的字符串,但是如果参数是最后一个?还是第一个?@enenen:如果是第一个,应该可以,但你是对的-如果是最后一个(或唯一一个),那么这就不起作用了。当page=x是最后一个时,这就不起作用了parameter@luqita:嗯,您在问题中写道,您希望“从字符串
page=55&
page=77&
中删除以下内容”…@luqita:它适用于所有以
&
结尾的情况,这正是您所要求的。我曾想到过这种解决方案,但在这种情况下,需要编写更多的代码,而
preg_replace()
只是解决了问题。@Robert:可能需要更多的代码,但如果它表达的意图更清晰,如果它是“经过战斗考验的”对于正则表达式无法覆盖的情况(我希望
parse_str
是这样),那么这是正确的方法。这不是语言环境意识,我的意思是,如果你在另一个不使用西方数字的国家,你的正则表达式将失败。您应该使用\d,因为其他人建议Edit根据OP的需要提供输出,所以我认为这不会影响他的区域设置。但我会改变的。谢谢你的建议。那个表达法真的不管用。。。它不会删除最后的“&”,也不会考虑超过1位的数字。谢谢你解释为什么使用内置而不是定制的解决方案更好。