Я пытался использовать:
$string="The Dr. is here!!! I am glad I'm in the USA for the Dr. quality is great!!!!!!"; preg_match_all('~.*?[?.!]~s',$string,$sentences); print_r($sentences);
Но это не работает на доктора, США и т. Д.
Есть ли у кого-нибудь лучшие предложения?
для этого нет простого решения. вам нужно сделать некоторую обработку естественного языка (NLP) в своем приложении и распознать каждое предложение. что-то вызывает OpenNLP , это инструмент анализатора NLP на основе JAVA. Или парсер Stanford NLP в Ruby. вы можете найти что-то подобное для php.
здесь я нашел набор классов для обработки естественного языка в PHP.
hmmm может попробовать что-то вроде $sentences = preg_split('/.*?[?.!]+\s+/', $string);
Это почти невозможно, так как в вашем примере четко указано, что знаки пунктуации, которые могут использоваться, например, д-р, США и т. Д., Не позволяют узнать, где начинается или заканчивается предложение.
Вы должны искать следующие символы, чтобы решить, следует ли следующее (начиная с после) новое слово препинания, которое вы упоминаете.