PHP:正确的正则表达式使第一个冒号左边的每个字母都小写
$value='x-Cem-Date:Wed, 16 Dec 2009 15:42:28 GMT';
现在我有:
$value = preg_replace('/(^.+)(?=:)/e', "strtolower('\\1')", $value);
这个输出
$value='x-cem-date:wed, 16 dec 2009 15:42:28 GMT';
应该输出:
$value='x-cem-date:Wed, 16 Dec 2009 15:42:28 GMT';
$value='x-Cem-Date:Wed, 16 Dec 2009 15:42:28 GMT';
Right now I have:
$value = preg_replace('/(^.+)(?=:)/e', "strtolower('\\1')", $value);
this outputs
$value='x-cem-date:wed, 16 dec 2009 15:42:28 GMT';
it should output:
$value='x-cem-date:Wed, 16 Dec 2009 15:42:28 GMT';
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
您的正则表达式应如下所示:
区别在于
+?
字符。+?
是非贪婪的,这意味着它将找到最少数量的字符,直到表达式移至表达式中的下一个匹配项,而不是查找下一个匹配项之前的最多字符。Your regular expression should be as follows:
The difference is the
+?
character. The+?
is non-greedy, meaning that it will find the LEAST amount of characters until the expression moves onto the next match in the expression, instead of the MOST characters until the next match.您可以考虑使用
explode()
和implode()
而不是正则表达式。You might consider using
explode()
andimplode()
instead of a regular expression.至少尝试
一下您发布的示例。
Try
It works on the example you posted, at least.
尝试使用匹配的正则表达式
这应该输出
尝试这个代替
?
在那里,所以正则表达式不会贪婪并抓取超出应有的内容。Try your regular expression with a match
This should output
Try this instead
The
?
is in there so the regex isn't greedy and grabbing more than it should.版本
仅供参考,这是使用
preg_replace_callback
输出的Just for information, this is the version using
preg_replace_callback
output