使用preg_split后保持标点符号?

时间:2015-08-31 23:30:56

标签: php preg-split

我正试图在问号,感叹号或句号上分割一个字符串,但同时我试图在分割它们之后保留标点符号。我该怎么办?感谢。

$input = "Sentence1?Sentence2.Sentence3!";
$input = preg_split("/(\?|\.|!)/", $input);
echo $input[0]."<br>";
echo $input[1]."<br>";
echo $input[2]."<br>";

期望的产出:

SENTENCE1?
SENTENCE2。
Sentence3!

实际产出:

SENTENCE1
SENTENCE2
Sentence3

2 个答案:

答案 0 :(得分:1)

manual知道所有

  

PREG_SPLIT_DELIM_CAPTURE       如果设置了此标志,则将捕获并返回分隔符模式中的带括号的表达式。

所以在你的情况下:

$input = preg_split("/(\?|\.|!)/", $input,NULL,PREG_SPLIT_DELIM_CAPTURE);

答案 1 :(得分:1)

您可以将正则表达式中的捕获组更改为lookbehind,如下所示:

$input = preg_split("/(?<=\?|\.|!)/", $input);