如何进行正则表达式替换,在日期字符串中添加字符


How to do a regex replacement, adding characters in a date string?

对于PHP

我有一个约会,我想换行。

我有$date='2008-09-28 9:19pm';我需要用br替换第一个空格成为

2008-09-28<br>9:19 pm

如果不是PM之前的第二个空格,我只会str_replace()它。

$date = preg_replace('/ /', '<br>', $date, 1);

s/ /<br'/>/应该这样做。尽管PHP正则表达式可能很贪婪,会替换所有空格。

编辑

我支持Ben Hoffstein的PHP解决方案。在可能的情况下,避免使用regex,因为它几乎总是有意外的副作用。

$date = '2008-09-28 9:19 pm';
$result = preg_replace('/('d{4}-'d{2}-'d{2}) (.*)/', '$1<br>$2', $date);

如果希望正则表达式匹配模式并返回两个部分,可以使用以下命令。然而,考虑到您所做的只是替换1个空间,请尝试在regex之后使用我建议的str_replace_once。Regex用于复杂的解析,而不是像替换一个空格这样的浪费用途(无意冒犯)。

请注意,以下是浏览器代码,所以不要试图逐字逐句地使用它。只是为了防止打字错误。

$regex = '/(['d]{4}-['d]{2}-['d]{2}) (['d]{1,2}:['d]{2} (am|pm))/';
$match = preg_match($regex, '2008-09-28 9:19 pm');
print $match[1];  // Returns 2008-09-28
print $match[2];  // Returns 9:19 pm
// Or replace:
preg_replace($regex, '$1<br>$2', $date);

我建议采用以下更快的机制。关于函数str_replace_once(),请参阅本文。

str_replace_once(' ', '<br>', $date);

实现这一点的另一种方法是,它速度更快,但代码更多

$date = substr($date, 0, 10) . '<br>' . substr($date, 11);