0

私は現在使用しています

$text= preg_replace('/(?<=[a-zA-Z])[.](?![\s$])/','. ',$text);

PHPで文章を編集するには、ここに問題がありますが、例は次のとおりです。

これは私のテキスト例です。この文の後、ドットの後にスペースはありません。別の文です。

私は何をすべきか?その場合、PHPに空白を追加してもらいたいのですが、すでに空白が含まれている文や「...」で終わっている文の後には追加しません。

もう 1 つの望ましくない動作は、数字に関するものです。例えば ​​:

宝くじで1,000,000が当たるなんてすごい!

編集後になってほしくない1. 000. 000

も同じですC.J.。それはとどまらなければなりC.J.ませんC. J.

つまり、次の場合に空白が必要です。

  • 「。」数字が後に続かない(他の記号でもかまいません)
  • 「...」のように複数のドットがある場合は無視します
  • ドットの前に 1 文字または 2 文字の単語がある場合は無視します。
4

1 に答える 1

2
$text = preg_replace('/(?<! [a-z]| [a-z]{2})\.(?! |\d|\.)/i', '. ', $text);

ここで実際に見てください:http://regex101.com/r/zE4pI4


テキストの先頭にあるイニシャルを考慮に入れたい場合、これはさらに複雑になる可能性があります (失敗する方法については、こちらを参照してください)。後読みは固定長でなければならないため、そのために別の後読みを作成する必要があります。

/(?<! [a-z]| [a-z]{2})(?<!\b[a-z]|\b[a-z]{2})\.(?! |\d|\.)/

ここで実際に見てください:http://regex101.com/r/pH1mZ5

于 2013-02-15T15:52:07.923 に答える