PHP:更正正则表达式,使第一个冒号左边的每个字母都小写

2022-03-23 00:00:00 regex php preg-replace
$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';

解决方案

您的正则表达式应该如下所示:

/(^.+?)(?=:)/

区别在于+?字符。+?是非贪婪的,这意味着它将查找最少的字符数,直到表达式移动到表达式中的下一个匹配项,而不是找到最多的字符数,直到下一个匹配项。

相关文章