Я хотел бы разделить текст
过公元年?因为无论你如何选择。简体字危及了对古代文学的研究输入!
Использование этих трех (или более)?! Символов в качестве разделителя. я могу это сделать, конечно, с
$lines = preg_split('/[。,!,?]/u',$body);
Однако я не хочу, чтобы результирующие строки сохраняли свой конечный разделитель. Также предложение может закончиться так же, как и 啊。。。
или 什么!??!!!!
Попробуй это:
$lines = preg_split('/(?<=[。!?])(?![。!?])/u',$body);
Он разбивается на позицию, которой предшествует один из ваших символов разделителя, но не за ней. Он не использует разделитель, и если есть два или более последовательных разделителя, он совпадает только после последнего.
В этом случае вы хотите написать разделитель строк самостоятельно. И сохраняйте непрерывные разделители в целом. (вы можете установить переменную состояния, указывающую, находится ли она в блоке текстового блока или разделителя).
Вы должны использовать preg_match_all
вместо preg_split
, т.е.
preg_match_all("/[^?!。]+[?!。]+/u", $text, $res);
См. http://www.ideone.com/rN7MB для использования.