【问题标题】:php split string into array by date (yyyy-mm-dd)php 按日期将字符串拆分为数组(yyyy-mm-dd)
【发布时间】:2012-01-29 17:10:01
【问题描述】:

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

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

txt 文件如下所示:

2012-01-28

text text text

2012-01-14

some other text

2011-12-07

a previous entry

等等

【问题讨论】:

  • 你能告诉我们你的preg_split()代码是什么样的吗?

标签: php arrays preg-split


【解决方案1】:

PREG_SPLIT_DELIM_CAPTURE 标志将防止您在拆分时删除您的日期,只要日期在您的模式字符串中加上括号即可。例如:

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

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

【讨论】:

    【解决方案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", ...}
    

    可以轻松使用或转换为自定义结构。

    【讨论】:

    • 用jburbage的回答,他的解决方案更好。
    猜你喜欢
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 2023-03-26
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多