当前位置:  开发笔记 > 编程语言 > 正文

在PHP中使用正则表达式替换空格

如何解决《在PHP中使用正则表达式替换空格》经验,为你挑选了1个好方法。

我对正则表达式很新.我需要替换一行多行文本中的空格.替换规则如下:

使用不间断的空格( )替换行首的所有空格.

用相同数量的非中断空格替换重复空格的任何实例(多个空格在一起).

不在线路的单个空间保持不变.

我使用Regex Coach来构建匹配模式:

/( ){2,}|^( )/

我们假设我有这个输入文本:

asdasd asdasd  asdas1
 asda234 4545    54
  34545 345  34534
34 345

使用PHP正则表达式替换函数(如preg_replace()),我想得到这个输出:

asdasd asdasd  asdas1
 asda234 4545    54
  34545 345  34534
34 345

我很高兴使用正则表达式进行简单的文本替换,但是我无法解决如何在匹配中替换多次以获得我想要的输出.



1> Jonathan Lon..:

我猜想找到每个空间并更换它会更容易.为此,请使用"预见"和"后视"组.

或者,找到一个\x20由任何单个空格(\s)引导或后跟的空格(); 但是,只能更换空间.

$str = "asdasd asdasd  asdas1\n asda234 4545    54\n  34545 345  34534\n34 345\n";

print preg_replace("/(?<=\s)\x20|\x20(?=\s)/", " ", $str);

(因为降价解析,我选择了#160)

结果是:

asdasd asdasd  asdas1
 asda234 4545    54
  34545 345  34534
34 345

有关详细信息,请查看PCRE和perlre.


回复评论

@ Sprogz:起初,我的想法是一样的.但是该示例显示了"\n " => "\n "第1行和第2行之间的行.

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有