2012-02-04 56 views
1

我有一篇文章,我想要做的是将每个句子保存到我的数据库中。所以我用来爆炸文字。 ! ?个字符。但是当我这样做时,我失去了这些角色。如何在不丢失爆炸字符的情况下爆炸字符串?保存爆炸字符

+2

尝试使用preg_split代替。 – ngen 2012-02-04 18:56:28

+0

是否有任何理由不能一劳永逸地将其全部保存起来,或以其他方式将其分割为段落? (例如'explode(PHP_EOL,$ essay);') – mrlee 2012-02-04 18:58:14

+0

这将是* soooo *不可靠(原文如此!)........(<--- 11句子) – 2012-02-04 18:59:05

回答

4

您可以使用PHP的preg_split函数并设置标志PREG_SPLIT_DELIM_CAPTURE。

这将给你一个包含句子和分隔符的数组,但在单独的数组元素中。

<?php 
$string="Hello World. Test! Example 123? 456!"; 
$parts = preg_split("#([!.?])#", $string, -1, PREG_SPLIT_DELIM_CAPTURE); 

var_dump($parts); 
?> 

...将返回以下:

array(9) { [0]=> string(11) "Hello World" [1]=> string(1) "." [2]=> string(5) " Test" [3]=> string(1) "!" [4]=> string(12) " Example 123" [5]=> string(1) "?" [6]=> string(4) " 456" [7]=> string(1) "!" [8]=> string(0) "" } 
1

只要使用使preg_split旗PREG_SPLIT_DELIM_CAPTURE:

$sentences = preg_split(
    '/([\?\.\!)/', 
    $input, 
    -1, 
    PREG_SPLIT_DELIM_CAPTURE 
); 

结果数组$句子将运行作为阵列(,,。 ..,...)