在 PHP 中,将冒号左边的每个字母小写,不使用爆炸、内爆
这可以用正则表达式来完成吗?
示例
x-example-HEADER:teSt 变成 x-example-header:测试
y-example:testoneTWO Three 变成 y-示例:testoneTWO三
Can this be done with regular expressions?
Examples
x-example-HEADER:teSt
becomes
x-example-header:teSt
y-exaMPLE:testoneTWOthree
becomes
y-example:testoneTWOthree
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用
preg_replace_callback()
:除特定情况外,您不能使用正则表达式进行大小写转换(例如,可以将“A”替换为“a”)。
编辑:好吧,你每天都会学到新东西。您可以这样做:
从模式修饰符:
然而,我会回避 eval()ing 字符串,尤其是与用户输入结合使用时,这可能是一种非常危险的做法。作为一般规则,我更喜欢使用
preg_replace_callback()
方法。Use
preg_replace_callback()
:You can't otherwise do case conversion with regular expressions except in specific cases (eg replace 'A' with 'a' is possible).
Edit: Ok, you learn something new everyday. You can do this:
From Pattern Modifiers:
I would however shy away from eval()ing strings, especially when combined with user input it can be a very dangerous practice. I would prefer the
preg_replace_callback()
approach as a general rule.您可以使用
e
修饰符< /a> 当给preg_replace< 时使用正则表达式模式/code>
(查看该页面上的示例 #4),以便调用 PHP 代码作为替换的一部分:
该模式会将第一个冒号之前的所有内容抓取到第一个反向引用中,然后将其替换为
strtolower
函数。You can use the
e
modifier on a regular expression pattern when given topreg_replace
(take a look at example #4 on that page) in order to call PHP code as part of the replacement:The pattern will grab everything before the first colon into the first backreference, and then replace it with the
strtolower
function.您可以查看 preg_replace_callback
You might take a look at preg_replace_callback