如何进行正则表达式替换,在日期字符串中添加字符?
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/ /<br\/>/
应该这样做。虽然 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);
【讨论】:
以上是关于如何进行正则表达式替换,在日期字符串中添加字符?的主要内容,如果未能解决你的问题,请参考以下文章