我正在使用
$text= preg_replace('/(?<=[a-zA-Z])[.](?![\s$])/','. ',$text);
要在PHP中编辑句子,但我有一个问题,这是一个例子:
这是我的示例文字。在这句话之后,在点之后没有空格。还有一句话。
我该怎么办?我希望PHP在这种情况下添加空格,但不是在已经有空格或以“......”结尾的句子之后
另一个不受欢迎的行为是数字。例如:
在彩票上赢得1.000.000有多棒!
我真的不希望它在编辑后成为1. 000. 000
。
与C.J.
同样如此。它必须保持C.J.
而不是C. J.
所以总之,在以下情况下应该有空格:
答案 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}}