繁体   English   中英

如何合并此RegEx代码

[英]How can I merge this RegEx code

我已经写了这个正则表达式代码,

/.[^.]*$/ .]* /.[^.]*$/ ->文件扩展名

/\\?.*/ >删除PHP中的所有?paramternames

当前用法:

preg_replace('/\?.*/', '', preg_replace('/.[^.]*$/','',basename($_SERVER['REQUEST_URI'])))

我如何才能对单个preg_replace调用(而不是对这两个调用)进行调用,是否有办法将两个RegExes合并到一个单独的RegEx中呢?

我可以发布预期的输出结果吗? 是。

HTTP://localhost/books.php标签= to_read

当我用两个preg_replaces运行此PHP代码时,会得到“ books” ,我用它在菜单中突出显示以告知用户当前页面,并基于页面URI突出显示菜单。

编辑: 此代码没有错,它可以工作。 但是,我想将两个正则表达式合并为一个,并且仅调用一个preg_replace。

通常,您可以将每个交替的one|two组合成两个模式。

在您的情况下,可能没有“文件扩展名”或查询字符串,因此应按正确的顺序进行匹配。 这就是为什么您应该同时选择两个部分:

 preg_replace("~ (\.\w+)? (\?.*)?  $   ~x",
                    ↓       ↓      ↓    ↓
                  ".ext"  "?………"  END  readability flag

这样可以确保.ext要么直接位于查询字符串之前,要么跨越最后一个字符本身。 同样,查询字符串可以是可选的,但仍应匹配而无需前面的扩展名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM