用不间断空格替换多个空格

tos*_*iba 4 html php regex pcre

 当多个空格时如何替换除第一个(白色)空格之外的所有空格?

特别要求与 php 一起使用preg_replace,所以 PCRE。

"This is     my text."
Run Code Online (Sandbox Code Playgroud)

应该转换成

"This is     my text."
Run Code Online (Sandbox Code Playgroud)

Wik*_*żew 5

似乎您只需要用另一个空格符号替换前面的每个空格。使用基于后视的方法:

(?<=\s)\s
Run Code Online (Sandbox Code Playgroud)

请参阅正则表达式演示

(?<=\s)是一个积极的后视,需要在当前位置之前存在一个空格,但空格不会被消耗,因此不会被替换。

下面是一个PHP 演示

$s = "This is     my text.";
echo preg_replace('~(?<=\s)\s~', '&nbsp;', $s);
// => This is &nbsp;&nbsp;&nbsp;&nbsp;my text.
Run Code Online (Sandbox Code Playgroud)