我想将字符串转换为由逗号或句点分隔的元素数组,但每个元素都保留其分隔符。例如,美国独立宣言序言的第一句话将成为:
这样做的有效方法是什么?我知道如何使用带有preg_split
标记的PREG_SPLIT_DELIM_CAPTURE
将片段和分隔符保存到数组中,但我不确定是否有方法可以保留逗号和句点一次操作中的句子碎片。
我想用更准确的方式来描述我想要的是preg_split
,其中分隔符将是前面有逗号,句号等的任何内容。我不确定正则表达式是否允许......
我需要这对utf8友好。
答案 0 :(得分:1)
这会有用吗?
if (preg_match_all("/([^.,!?]*[.,!?])/", $str, $matches)) {
var_dump($matches[1]);
}
答案 1 :(得分:0)
如果我理解正确,您正在寻找以下内容:
$str = 'asdf, qwer, zxcv, uiop';
$arr = preg_split('/(,)/', $str, -1, PREG_SPLIT_DELIM_CAPTURE);
$tmp = array();
for ($i = 0; $i < sizeof($arr); $i += 2) {
$delim = isset($arr[$i + 1]) ? $arr[$i + 1] : '';
$tmp[] = $arr[$i] . $delim;
}
print_r($tmp);
打印哪些:
Array
(
[0] => asdf,
[1] => qwer,
[2] => zxcv,
[3] => uiop
)