У меня есть случайный текст, хранящийся в $sentences
. Используя regex, я хочу разбить текст на предложения, см.
function splitSentences($text) {
$re = '/ # Split sentences on whitespace between them.
(?<= # Begin positive lookbehind.
[.!?] # Either an end of sentence punct,
| [.!?][\'"] # or end of sentence punct and quote.
) # End positive lookbehind.
(?<! # Begin negative lookbehind.
Mr\. # Skip either "Mr."
| Mrs\. # or "Mrs.",
| T\.V\.A\. # or "T.V.A.",
# or... (you get the idea).
) # End negative lookbehind.
\s+ # Split on whitespace between sentences.
/ix';
$sentences = preg_split($re, $text, -1, PREG_SPLIT_NO_EMPTY);
return $sentences;
}
$sentences = splitSentences($sentences);
print_r($sentences);
Он отлично работает.
Тем не менее, он не разделяется на предложения, если есть символы Unicode:
$sentences = 'Entertainment media properties. Fairy Tail and Tokyo Ghoul.';
Или этот сценарий:
$sentences = "Entertainment media properties. Fairy Tail and Tokyo Ghoul.";
Что я могу сделать, чтобы он работал, когда в тексте есть символы Unicode?
Ниже приведено ideone.
Информация о баунти
Я ищу полное решение этого. Прежде чем отправлять ответ, ознакомьтесь с темой комментариев, которую я написал с WiktorStribiżew, для получения более релевантной информации по этой проблеме.