在PHP中将段落分解为句子

Chr*_*and 10 php string explode text-segmentation

我一直在用

explode(".",$mystring)
Run Code Online (Sandbox Code Playgroud)

将一个段落分成句子.然而,这并不包括以不同的标点符号结束的句子,例如!?:;

有没有办法使用数组作为分隔符而不是单个字符?另外还有另一种利用各种标点符号分割的简洁方法吗?

我试过了

explode(("." || "?" || "!"),$mystring)
Run Code Online (Sandbox Code Playgroud)

希望但它不起作用......

Kai*_*aii 14

您可以使用preg_split()具有组合PCRE先行条件的每次出现后的字符串分割.,;,:,?,!,...同时保持实际标点符号完整:

码:

$subject = 'abc sdfs.    def ghi; this is an.email@addre.ss! asdasdasd? abc xyz';
// split on whitespace between sentences preceded by a punctuation mark
$result = preg_split('/(?<=[.?!;:])\s+/', $subject, -1, PREG_SPLIT_NO_EMPTY);
print_r($result);
Run Code Online (Sandbox Code Playgroud)

结果:

Array
(
    [0] => abc sdfs.
    [1] => def ghi;
    [2] => this is an.email@addre.ss!
    [3] => asdasdasd?
    [4] => abc xyz
)
Run Code Online (Sandbox Code Playgroud)


cod*_*ict 6

你可以做:

preg_split('/\.|\?|!/',$mystring);
Run Code Online (Sandbox Code Playgroud)

或(更简单):

preg_split('/[.?!]/',$mystring);
Run Code Online (Sandbox Code Playgroud)