我正试图在问号,感叹号或句号上分割一个字符串,但同时我试图在分割它们之后保留标点符号。我该怎么办?感谢。
$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
答案 0 :(得分:1)
manual知道所有
PREG_SPLIT_DELIM_CAPTURE 如果设置了此标志,则将捕获并返回分隔符模式中的带括号的表达式。
所以在你的情况下:
$input = preg_split("/(\?|\.|!)/", $input,NULL,PREG_SPLIT_DELIM_CAPTURE);
答案 1 :(得分:1)
您可以将正则表达式中的捕获组更改为lookbehind,如下所示:
$input = preg_split("/(?<=\?|\.|!)/", $input);