1

我有一个纯文本日志,我正在尝试用 php 格式化。我想将每个条目拆分为一个包含日期和文本的数组。

使用 preg_split 我可以做到这一点,但是它完全删除了日期!

txt 文件看起来像这样:

2012-01-28

text text text

2012-01-14

some other text

2011-12-07

a previous entry

等等

4

2 回答 2

2

无论如何,您可以preg_match_all

$matches = array();
preg_match_all('~(?P<date>\d{4}-\d{2}-\d{2})\s*(?P<text>.*)~ms', $subject, $matches);

可能需要稍微干预一下以适应您的内容。

结果变成类似的结构

matches => {
    date(3) => {"2012-01-28", ... }
    ...
    text(3) => {"text text text", ...}

可以很容易地使用或转换为自定义结构。

于 2012-01-29T17:17:00.250 回答
2

PREG_SPLIT_DELIM_CAPTURE只要日期在模式字符串中用括号括起来,该标志就会阻止您在拆分时删除日期。例如:

$array = preg_split('/(\d{4}-\d{2}-\d{2})/', $text, null, PREG_SPLIT_DELIM_CAPTURE);

现在您的日期在数组的奇数索引中,而您的内容在偶数索引中。

于 2012-01-29T18:13:37.430 回答