2010-08-09 95 views
2

我想分割文本
過公元年?因爲無論你如何選擇。簡體字危及了對古代文學的研究輸入!分割各種分隔符,同時保持分隔符?

使用這三個(或更多)?!字符作爲分隔符。 我可以但我wan't有結果行保持他們的結束符與
$lines = preg_split('/[。,!,?]/u',$body);

做,當然這一點。另外一個句子可能會這樣結束啊。。。什麼!??!!!!

回答

5

試試這個:

$lines = preg_split('/(?<=[。!?])(?![。!?])/u',$body); 

它分裂在那個正通過您的分隔符前面一個而不是跟着一個位置。它不會使用分隔符,並且如果有兩個或更多連續的分隔符,它只會在最後一個分隔符之後匹配。

+0

作品完美! – Moak 2010-08-09 09:03:58

0

在這種情況下,您希望自己編寫字符串拆分器。並保持連續的分隔符作爲一個整體。 (你可以設置一個狀態變量來指示它是否在文本塊或分隔符塊中)。

0

您應該使用preg_match_all代替preg_split,即

preg_match_all("/[^?!。]+[?!。]+/u", $text, $res); 

的用法請參見http://www.ideone.com/rN7MB