我有一个变量(文本),每次有更新时都会用句子更新。当我显示这个数组时,它会变成一个长句,我想用单句来解析它以便于阅读。
<?php
$pattern = '~\\d+-\\d+-\\d{4} // \\w+: ~ ';
$subject = '01-02-2015 // john: info text goes here 10-12-2015 // peter: some more info
';
$matches = array();
$result = preg_match_all ($pattern, $subject, $matches);
?>
这给出了这个输出:
$matches:
array (
0 =>
array (
0 => '01-02-2015 // john: ',
1 => '10-12-2015 // peter: ',
),
)
我希望输出为:
$matches:
array (
0 =>
array (
0 => '01-02-2015 // john: info text goes here',
1 => '10-12-2015 // peter: some more info',
),
)
我需要输出是这样的,所以我可以使用foreach循环来打印每个句子。
PS。我想首先尝试以这种方式工作,因为否则我需要更改数据库中的大量条目。
PPS。我也不是正则表达的英雄,所以我希望有人可以帮助我!
答案 0 :(得分:2)
只需更改下面的正则表达式,
$pattern = '~\d+-\d+-\d{4} // \w+: .*?(?=\s\d+|$)~';
.*?
将执行零个或多个字符的非贪婪匹配,直到达到数字或行尾的空格。
$str = "01-02-2015 // john: info text goes here 10-12-2015 // peter: some more info";
preg_match_all('~\d+-\d+-\d{4} // \w+: .*?(?=\s\d+|$)~', $str, $matches);
print_r($matches);
<强>输出:强>
Array
(
[0] => Array
(
[0] => 01-02-2015 // john: info text goes here
[1] => 10-12-2015 // peter: some more info
)
)