2016-03-27 6 views
0

解決方法が見つかりません。助けてください。 私は文章の配列に、この "段落" を分割する必要があります: "。。。。。B、Cの世界は-inこんにちは.. o.cこんにちは.. Hello Worldの8.5 Hello World" のPHP +段落を配列に分割する

$段落=;

結果の配列は次のようになります。私はこれまでのところ

preg_split('/(?<=[.?!;:])\s+/', $sentence, -1, PREG_SPLIT_NO_EMPTY); 

を得たが、これは小数を許可していません

0=>a. 
1=>b. 
2=>c. 
3=>hell o.c. 
4=>hello world -in. 
5=>hello. 
6=>world. 
7=>8.5 hello world. 

+2

なぜ 'o.c.'地獄?あなたのコードは、https://eval.in/542844に、入力変数に入力ミスがあると予想されるように機能しますか? '$ paragraph'の代わりに' $ sentence' ...あるいは何か他のことをしようとしているのでしょうか? – chris85

+0

および-in。私たちのビジネスで使用されている2つの略語で、分割が起こらないようにすることができます。 –

+0

あなたの現在のコードはうまくいかず、なぜ 'hello oc.c'ではなく' hell oc.c.'なのですか?おそらく、問題がより目立つところで長いサンプル文字列を提供する必要がありますか? – chris85

答えて

0

前の一致が一致するかどうか一致するように正規表現に指示するには(*SKIP)(*FAIL)を使用できます。だから、

(in|o\.c)\.\h+(*SKIP)(*FAIL)|(?<=[.?!])\s+ 

in.またはo.c.が一致した場合には一致しないために正規表現を教えてください。それ以外の場合は、.!、または?とスペースで区切ります。

PHPのデモ:https://eval.in/542856
Regex101デモ:https://regex101.com/r/eS0tR7/1

関連する問題