【发布时间】:2010-05-20 17:40:20
【问题描述】:
编辑:好的,我无法阅读,感谢 Shrapnel 上校的帮助。如果有人来这里寻找相同的答案...
print_r(preg_split('/([\!|\?|\.|\!\?])/', $string, null, PREG_SPLIT_DELIM_CAPTURE));
有没有什么办法可以在一组分隔符上拆分字符串,并在拆分后保留分隔符的位置和字符?
例如,使用 ! ? . !? 的分隔符来转:
$string = 'Hello. A question? How strange! Maybe even surreal!? Who knows.';
进入这个
array('Hello', '.', 'A question', '?', 'How strange', '!', 'Maybe even surreal', '!?', 'Who knows', '.');
目前我正在尝试使用print_r(preg_split('/([\!|\?|\.|\!\?])/', $string)); 将分隔符捕获为子模式,但我运气不佳。
【问题讨论】:
-
为什么不阅读函数的手册页?可能有答案吗?虽然要将分隔符作为子模式捕获,但您可以使用 preg_match_all。但分裂肯定是最好的。只是养成先参考手册页的习惯
-
Erp.刚回到页面,我现在要去配镜师那里买一副眼镜:/我要失明了。谢谢你让我再看一遍:P
-
请注意,您使用的是字符类。
[\!|\?|\.|\!\?]表示!、|、?和.中的任意一个字符。您可能想要的是:(!|\?|\.|!\?)。或者使用字符类:([?.]|!\??).
标签: php regex explode preg-split