PHP:如何完全停止preg_split?

时间:2017-03-28 00:37:41

标签: php arrays regex

我想取一个字符串并通过句号(句号)将其拆分(或将其分解)为数组。

我曾经有过:

$processed_data = explode(".", $raw_data);

但这会删除句号。

研究,我发现preg_split,所以尝试了:

$processed_data = preg_split('\.', $raw_data, PREG_SPLIT_DELIM_CAPTURE);

同时使用\.\\.

但尽可能地尝试,我找不到一种方法来正确地包括全停。

有人知道这样做的正确方法吗?

预期结果是:

字符串

$raw_data = 'This is my house. This is my car. This is my dog.';

通过句号分成一个数组,例如:

array("This is my house.", "This is my car.", "This is my dog.")

2 个答案:

答案 0 :(得分:2)

将字符串拆分为句子:

preg_match_all('~\s*\K[^.!?]*[.!?]+~', $raw_data, $matches);
$processed_data = $matches[0];

注意:如果你想处理像缩写这样的边缘情况,一个简单的正则表达式是不够的,你需要使用nltk或任何其他nlp工具和字典。

答案 1 :(得分:0)

你能试试吗?

$string = preg_replace("/\.\s?([A-Z])/", "*****$1", $raw_data);
$array = explode("*****", $string);