Php 在使用preg_split at后保留标点符号?
我试图在问号、感叹号或句点处拆分字符串,但同时我试图在拆分后保留标点符号。我该怎么做?谢谢Php 在使用preg_split at后保留标点符号?,php,preg-split,Php,Preg Split,我试图在问号、感叹号或句点处拆分字符串,但同时我试图在拆分后保留标点符号。我该怎么做?谢谢 $input = "Sentence1?Sentence2.Sentence3!"; $input = preg_split("/(\?|\.|!)/", $input); echo $input[0]."<br>"; echo $input[1]."<br>"; echo $input[2]."<br>"; $input=“句子1?句子2.句子3!”; $input
$input = "Sentence1?Sentence2.Sentence3!";
$input = preg_split("/(\?|\.|!)/", $input);
echo $input[0]."<br>";
echo $input[1]."<br>";
echo $input[2]."<br>";
$input=“句子1?句子2.句子3!”;
$input=preg_split(“/(\?\.\.\!)/”,$input);
回显$input[0]。“
”;
回显$input[1]。“
”;
echo$input[2]。“
”;
预期产出:
第1句?第2句。
第三句
实际产出: 句子1
句子2
句子3
万事通 PREG_SPLIT_DELIM_CAPTURE 如果设置了此标志,分隔符模式中的括号表达式也将被捕获并返回 因此,在你的情况下:
$input = preg_split("/(\?|\.|!)/", $input,NULL,PREG_SPLIT_DELIM_CAPTURE);
您可以通过将正则表达式中的捕获组更改为类似的:
$input=preg_split(“/(?@PaulCrovella)我想你是对的。当我测试它时,出现了一个未定义的偏移量错误,它只在句子1和句子2之间分割。
$input = preg_split("/(?<=\?|\.|!)/", $input);