我有问题,如何用& nbsp替换2或1个char字和任何字符串之间的空格。我的意思是:
Cart is protecting
on garder
要:
Cart is protecting
on garder
我尝试使用此功能:preg_replace("/[.{1,2}\s+.+]/g", " ", $string);
但它取代了每个空白
答案 0 :(得分:1)
您可以使用以下正则表达式。
preg_replace('~(?<!\S)(\S{1,2})\h+~', '\1 ', $string);
(?<!\S)
否定后卫声称该匹配不会以非空格字符开头。
(\S{1,2})
捕获一个或两个非空格字符。
\h+
匹配一个或多个水平空格字符。
或强>
添加正向前瞻以检查匹配的空格是否后跟非空格字符。
preg_replace('~(?<!\S)(\S{1,2})\h+(?=\S)~', '\1 ', $string);