2

我有一个字符串如下

“2012-06-29 Some text 2012-06-30 Some text ..” 我正在使用 split(日期的正则表达式)在 php 中拆分上述文本,但我也需要获取该日期。我想得到我用来分割字符串的分割字符串。我需要拆分字符串、日期和单独变量中的字符串来处理。

   2012-06-29 App Started
   2012-06-30 Login Event

我怎样才能在php中得到这个

4

2 回答 2

3

像什么?

preg_match_all("#(?<date>[0-9]{4}-[0-9]{2}-[0-9]{2}) (?<text>[^0-9]+)#", $text, $matches)

示例代码

        $text = "2012-12-25 xmas 1984-06-01 Puggans birhday 2012-07-28 today";

        preg_match_all("#(?<date>[0-9]{4}-[0-9]{2}-[0-9]{2}) (?<text>[^0-9]+)#", $text, $matches, PREG_SET_ORDER);

        foreach($matches as $current_match)
        {
                echo "<tr><td>" . $current_match['date'] . "</td><td>" . trim($current_match['text']) . "</td></tr>\n";
        }
?>
于 2012-06-28T10:38:36.283 回答
0

也可以使用 PREG_SPLIT_DELIM_CAPTURE 尝试 preg_split。

http://www.php.net/manual/en/function.preg-split.php

$text="2012-06-29 App Started
2012-06-30 Login Event";

$data=preg_split("/([0-9]{4}\-[0-9]{2}\-[0-9]{2})/", $text, 0, PREG_SPLIT_DELIM_CAPTURE);

print_r($data);

给出:

数组([0] => [1] => 2012-06-29 [2] => 应用启动 [3] => 2012-06-30 [4] => 登录事件)

切断第一个,然后您的所有数据都是替代字段。

如果您按 \nDATE 拆分,这将允许您在文本中也有日期。

$text="2012-06-29 App Started 2003-20-02
2012-06-30 Login Event";

$data=preg_split("/\\n([0-9]{4}\-[0-9]{2}\-[0-9]{2})/", "\n".$text, 0, PREG_SPLIT_DELIM_CAPTURE);
于 2012-06-28T10:39:19.893 回答