【问题标题】: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() 它。

【问题讨论】:

    标签: php regex


    【解决方案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('/(\d{4}-\d{2}-\d{2}) (.*)/', '$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);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-01-21
            • 2018-07-13
            • 2017-02-04
            • 1970-01-01
            相关资源
            最近更新 更多