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