在2个字符后替换空格

时间:2015-02-17 12:14:09

标签: php regex preg-replace preg-match

我有问题,如何用& nbsp替换2或1个char字和任何字符串之间的空格。我的意思是:

Cart is protecting
on garder

要:

Cart is&nbspprotecting
on&nbspgarder

我尝试使用此功能:preg_replace("/[.{1,2}\s+.+]/g", " ", $string); 但它取代了每个空白

1 个答案:

答案 0 :(得分:1)

您可以使用以下正则表达式。

preg_replace('~(?<!\S)(\S{1,2})\h+~', '\1&nbsp', $string);

(?<!\S)否定后卫声称该匹配不会以非空格字符开头。

(\S{1,2})捕获一个或两个非空格字符。

\h+匹配一个或多个水平空格字符。

添加正向前瞻以检查匹配的空格是否后跟非空格字符。

preg_replace('~(?<!\S)(\S{1,2})\h+(?=\S)~', '\1&nbsp', $string);

DEMO