我有一个纯文本日志,我正在尝试用 php 格式化。我想将每个条目拆分为一个包含日期和文本的数组。
使用 preg_split 我可以做到这一点,但是它完全删除了日期!
txt 文件看起来像这样:
2012-01-28
text text text
2012-01-14
some other text
2011-12-07
a previous entry
等等
我有一个纯文本日志,我正在尝试用 php 格式化。我想将每个条目拆分为一个包含日期和文本的数组。
使用 preg_split 我可以做到这一点,但是它完全删除了日期!
txt 文件看起来像这样:
2012-01-28
text text text
2012-01-14
some other text
2011-12-07
a previous entry
等等
无论如何,您可以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", ...}
可以很容易地使用或转换为自定义结构。
PREG_SPLIT_DELIM_CAPTURE
只要日期在模式字符串中用括号括起来,该标志就会阻止您在拆分时删除日期。例如:
$array = preg_split('/(\d{4}-\d{2}-\d{2})/', $text, null, PREG_SPLIT_DELIM_CAPTURE);
现在您的日期在数组的奇数索引中,而您的内容在偶数索引中。