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

Posted

技术标签:

【中文标题】如何进行正则表达式替换,在日期字符串中添加字符?【英文标题】:How to do a regex replacement, adding characters in a date string? 【发布时间】:2010-09-16 12:34:21 【问题描述】:

对于 php

我有一个想要换行的日期。

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

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

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

【问题讨论】:

【参考方案1】:
$date = preg_replace('/ /', '<br>', $date, 1);

【讨论】:

这正是我需要的,也是最简洁的。谢谢 我也喜欢您下面的想法,但可以使用 $date=substr_replace($date,''10,11) 缩短它【参考方案2】:

s/ /&lt;br\/&gt;/ 应该这样做。虽然 PHP 正则表达式可能很贪心并替换​​所有空格。

编辑

我支持 Ben Hoffstein 的 PHP 解决方案。尽可能避免使用正则表达式,因为它几乎总是会产生意想不到的副作用。

【讨论】:

【参考方案3】:
$date = '2008-09-28 9:19 pm';
$result = preg_replace('/(\d4-\d2-\d2) (.*)/', '$1<br>$2', $date);

【讨论】:

【参考方案4】:

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

请注意以下是浏览器代码,所以不要尝试逐字使用它。以防万一有错别字。

$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()见this post。

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

【讨论】:

【参考方案5】:

另一种更快但代码更多的方法是

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

【讨论】:

以上是关于如何进行正则表达式替换,在日期字符串中添加字符?的主要内容,如果未能解决你的问题,请参考以下文章

使用正则表达式替换仅保留正斜杠和数字

EditPlus 用正则表达式去除空格并添加一些字符

在正则表达式中转义特殊字符

notepad++正则表达式替换,在匹配文本前插入字符,如何做到?

js 正则验证正整数

如何在 MySQL 中进行正则表达式替换?