私は使用しようとしてきました:
$string="The Dr. is here!!! I am glad I'm in the U.S.A. for the Dr. quality is great!!!!!!";
preg_match_all('~.*?[?.!]~s',$string,$sentences);
print_r($sentences);
ただし、Dr.、USAなどでは機能しません。
誰にもより良い提案がありますか?
私は使用しようとしてきました:
$string="The Dr. is here!!! I am glad I'm in the U.S.A. for the Dr. quality is great!!!!!!";
preg_match_all('~.*?[?.!]~s',$string,$sentences);
print_r($sentences);
ただし、Dr.、USAなどでは機能しません。
誰にもより良い提案がありますか?
そのための簡単な解決策はありません。アプリケーションで自然言語処理(NLP)を実行し、各文を認識する必要があります。OpenNLPと呼ばれるものがあります。これは Java ベースの NLP パーサー ツールです。または、Ruby のスタンフォード NLP パーサー。phpのようなものを見つけることができます。
ここで、PHP の自然言語処理用の一連のクラスを見つけました。
うーん、多分次のようなことを試してください$sentences = preg_split('/.*?[?.!]+\s+/', $string);
あなたの例は、Dr.、USAなどで使用できる句読点文字が文の開始/終了場所を知ることを不可能にすることを明確に示しているため、これはほとんど不可能です。
次の文字を検索して、言及している句読点文字の後に新しい文が続く (後に始まる) かどうかを判断する必要があります。