PHP正则表达式从字符串中排除两个字符串

PHP正则表达式从字符串中排除两个字符串,php,trim,regex-negation,truncate,Php,Trim,Regex Negation,Truncate,在搜索了其他各种问题,试图自己解决这个问题之后,我已经走到了这一步,但我不知道如何添加一个额外的字符串 // $url will actually be $_SERVER['REQUEST_URI'] $url = "/folder123/?id=foo"; // it could be "index.php?id=foo" preg_replace_callback('#^/folder123/#', function($match) { return $match[1]; }, $

在搜索了其他各种问题,试图自己解决这个问题之后,我已经走到了这一步,但我不知道如何添加一个额外的字符串

// $url will actually be $_SERVER['REQUEST_URI']
$url = "/folder123/?id=foo"; // it could be "index.php?id=foo"

preg_replace_callback('#^/folder123/#', function($match) {
    return $match[1];
}, $url);
预期结果:?id=foo


使用我当前的代码,我将得到预期的结果;但是我不知道如何检查index.php。我的目的是让字符串排除这两个部分。

要匹配这两个部分,可以使用后跟
\K
来重置报告匹配的起点


要将两者匹配,您可以使用后跟
\K
来重置报告匹配的起点


我希望这能帮助您:

$url = "index.php?id=foo22"; // it could be "index.php?id=foo"

preg_replace_callback('/(\?|\&).*/', function($match) {
    var_dump($match[0]) ;
}, $url);

我希望这能帮助你:

$url = "index.php?id=foo22"; // it could be "index.php?id=foo"

preg_replace_callback('/(\?|\&).*/', function($match) {
    var_dump($match[0]) ;
}, $url);

没有上下文,很难帮助你。为什么要排除index.php或folder123?我认为访问
$\u GET
会更容易,你必须使用吗‍‍<代码>正则表达式?您还可以使用其他函数作为示例:$url=“/index.php/?id=foo”;echo substr($url,strpos($url,“?”)@Mike某些地址中可能没有任何GET变量,因此这不合适。不需要额外的上下文,因为我不是在寻找可能在所有情况下都不起作用的替代解决方案。测试如下:preg_replace_回调('/(\?\\&)。*/',函数($match){var_dump($match[0]);},$url);没有上下文,很难帮助你。为什么要排除index.php或folder123?我认为访问
$\u GET
会更容易,你必须使用吗‍‍<代码>正则表达式?您还可以使用其他函数作为示例:$url=“/index.php/?id=foo”;echo substr($url,strpos($url,“?”)@Mike某些地址中可能没有任何GET变量,因此这不合适。不需要额外的上下文,因为我不是在寻找可能在所有情况下都不起作用的替代解决方案。测试如下:preg_replace_回调('/(\?\\&)。*/',函数($match){var_dump($match[0]);},$url);这管用!但是,在正则表达式之前需要一个^。谢谢这管用!但是,在正则表达式之前需要一个^。谢谢@TheFlarnet这是另一个没有
\K
但带有捕获组的演示,捕获组将在回调中返回。现在,
preg\u replace\u callback
实际上返回了匹配的组,其值为
?id=foo
,我应该用这个值更新我的答案吗?老实说,我不太确定,因为我看到了相同的最终结果,但也许你是对的——考虑到这个可能更合适,因为它是一个一对一的返回值。@TheFlarnet这是另一个没有
\K
但带有捕获组的演示,该组将在回调中返回。现在,
preg\u replace\u callback
实际上返回了匹配的组,其值为
?id=foo
,我是否要用这个值更新我的答案?老实说,我不太确定,因为我看到了相同的最终结果,但也许你是对的——考虑到这个值可能更合适,因为它是一对一的返回值。