如何在PHP中编辑句子之间的空格?

时间:2013-02-15 15:49:29

标签: php regex preg-replace sentence

我正在使用

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

要在PHP中编辑句子,但我有一个问题,这是一个例子:

  

这是我的示例文字。在这句话之后,在点之后没有空格。还有一句话。

我该怎么办?我希望PHP在这种情况下添加空格,但不是在已经有空格或以“......”结尾的句子之后

另一个不受欢迎的行为是数字。例如:

  

在彩票上赢得1.000.000有多棒!

我真的不希望它在编辑后成为1. 000. 000

C.J.同样如此。它必须保持C.J.而不是C. J.

所以总之,在以下情况下应该有空格:

  • “”。 后跟数字(可以是其他符号)
  • 当有多个点像“...”
  • 时忽略
  • 忽略点之前有1或2个字母的单词。

1 个答案:

答案 0 :(得分:2)

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

在此处查看:[{3}}


如果您想在文本开头考虑首字母(http://regex101.com/r/zE4pI4),这会变得更加复杂。由于lookbehind必须是固定长度,你必须为此创建一个单独的lookbehind:

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

在此处查看:[{3}}