[英]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.