2017-04-23 74 views
0

我试图用“。”来分割一串句子。获取数组中的每个句子。如下所示:Php分割语句

$Text = "Hello, Mr. James. How are you today." 
$split= explode(".", $Text); 

正如你所看到的$ Text包含2个句子,因此我应该只有2个元素在数组中。我遇到的问题是,有时我的$ Text可能包含诸如“Mr.”或任何其他包含“。”的单词。在一个句子中间。这将导致句子从中间被分割并在阵列中单独放置象下面这样:

Array ([0] => Hello, Mr [1] => James [2] => How are you today [3] =>) 
+1

可能的重复:[将文本拆分成句子](http://stackoverflow.com/q/16377437/4577762) – FirstOne

+1

@FirstOne差不多。你链接的那个依赖于在一个点/空格之后是否有一封信(詹姆斯先生)会将这个信件注册为2个句子。我认为唯一的方法是检查点后的第一个单词是有效的英语词典单词还是名称。即使如此,这将是非常不可靠 – icecub

+1

@icecub我没有标志,只是写了_possible_;)。无论如何,谷歌搜索返回了一堆结果(如[这](http://stackoverflow.com/questions/2158296/how-to-split-a-paragraph-into-sentences)),但我怀疑操作经历了所有这些。 – FirstOne

回答

0

您可以避免很多异常处理和一般的痛苦,如果你能确保所有的英文句子是正确间隔在每个句子的结尾 - 连续2个空格。在处理一些数字化的字符串时,这可能很困难,因为有时多间距会被压缩为单个空间。

这就是我的意思是:

$Text="Hello, Mr. James. How are you today."; 
$split= explode(" ",$Text); 
var_export($split); 
// array (0 => 'Hello, Mr. James.', 1 => 'How are you today.',) 

爆炸每个space-space会给你一个可靠的结果。 如果你想输出,你需要使用输入。