2010-08-09 6 views
2

Je voudrais partager un texte
过公元年?因为无论你如何选择。简体字危及了对古代文学的研究输入!Fractionner par différents délimiteurs, tout en conservant le délimiteur?

sur l'aide de ces trois (ou plus)?!. Caractères que delimiter. je peux faire cela bien sûr avec
$lines = preg_split('/[。,!,?]/u',$body);

Cependant, je wan't d'avoir les lignes résultantes conservent leur delimiter fin. Aussi une phrase peut se terminer comme 啊。。。 ou 什么!??!!!!

Répondre

5

Essayez ceci:

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

Il se divise en une position qui est précédée d'un de vos personnages délimiteurs mais pas suivi par un. Il ne consomme pas le délimiteur, et s'il y a deux délimiteurs consécutifs ou plus, il ne correspond qu'après le dernier.

+0

Fonctionne parfaitement !! – Moak

0

Dans ce cas, vous souhaitez écrire le séparateur de chaîne vous-même. Et gardez les délimiteurs continus dans leur ensemble. (Vous pouvez définir une variable d'état indiquant si elle est dans un bloc de texte ou un bloc de délimiteur).

0

Vous devez utiliser preg_match_all au lieu de preg_split, à savoir

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

Voir http://www.ideone.com/rN7MB pour l'utilisation.

Questions connexes