【发布时间】: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() 它。
【问题讨论】:
对于 PHP
我有一个想要换行的日期。
我有 $date = '2008-09-28 9:19 pm'; 我需要用 br 替换第一个空格 成为
2008-09-28<br>9:19 pm
如果不是在 PM 之前的第二个空格,我只会 str_replace() 它。
【问题讨论】:
$date = preg_replace('/ /', '<br>', $date, 1);
【讨论】:
s/ /<br\/>/ 应该这样做。虽然 PHP 正则表达式可能很贪心并替换所有空格。
我支持 Ben Hoffstein 的 PHP 解决方案。尽可能避免使用正则表达式,因为它几乎总是会产生意想不到的副作用。
【讨论】:
$date = '2008-09-28 9:19 pm';
$result = preg_replace('/(\d{4}-\d{2}-\d{2}) (.*)/', '$1<br>$2', $date);
【讨论】:
如果您希望正则表达式匹配模式并返回两个部分,您可以使用以下内容。但是,考虑到您所做的只是替换 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);
【讨论】:
另一种更快但代码更多的方法是
$date = substr($date, 0, 10) . '<br>' . substr($date, 11);
【讨论】: