php中非破坏空间的正则表达式

时间:2010-01-29 02:58:29

标签: php html regex

输入:

$string = "a b c  d   e"; 

我在php中有一个字符串,我需要用非中断空格代码替换字符串

输出:

"a \xc2\xa0b c \xc2\xa0d \xc2\xa0\xc2\xa0e"
  1. 单个空格,第一个空格不允许替换为\ xc2 \ xa0
  2. 当两个空格出现“”时,输出为“\ xc2 \ xa0”,保留第一个空格,替换第二个空格。
  3. 当三个空格出现“”时,输出为“\ xc2 \ xa0 \ xc2 \ xa0”,保留第一个空格,替换第二个和第三个空格。
  4. 输入字符串是随机的
  5. 使用正则表达式或php的其他功能的任何想法 非常感谢你。

2 个答案:

答案 0 :(得分:1)

preg_replace('/(?<= ) {1,2}/', "\xc2\xa0", $str);

Lookbehind (?<= )会看到空格是否在匹配项之前, {1,2}匹配1和2个空格。替换只会发生匹配的空间,而不是外观。如果您想要替换尽可能多的空格(如果还有3个以上),只需将{1,2}替换为+

答案 1 :(得分:1)

$s = preg_replace('~(?<= ) ~', '\xc2\xa0', $s);