我有一个字符串如下
“2012-06-29 Some text 2012-06-30 Some text ..” 我正在使用 split(日期的正则表达式)在 php 中拆分上述文本,但我也需要获取该日期。我想得到我用来分割字符串的分割字符串。我需要拆分字符串、日期和单独变量中的字符串来处理。
像
2012-06-29 App Started 2012-06-30 Login Event
我怎样才能在php中得到这个
我有一个字符串如下
“2012-06-29 Some text 2012-06-30 Some text ..” 我正在使用 split(日期的正则表达式)在 php 中拆分上述文本,但我也需要获取该日期。我想得到我用来分割字符串的分割字符串。我需要拆分字符串、日期和单独变量中的字符串来处理。
像
2012-06-29 App Started 2012-06-30 Login Event
我怎样才能在php中得到这个
像什么?
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";
}
?>
也可以使用 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);