php用一个空格替换多个空格

Dan*_*ani 184 php regex formatting string-formatting ereg-replace

我正试图用一个空格替换多个空格.当我使用时ereg_replace,我收到一个关于它被弃用的错误.

ereg_replace("[ \t\n\r]+", " ", $string);
Run Code Online (Sandbox Code Playgroud)

是否有相同的替代品.我需要用一个" "空格替换多个空格和多个nbsp空格.

cle*_*tus 389

使用preg_replace()而不是[ \t\n\r]使用\s:

$output = preg_replace('!\s+!', ' ', $input);
Run Code Online (Sandbox Code Playgroud)

来自正则表达式基本语法参考:

\ d,\ w和\ s

匹配数字,单词字符(字母,数字和下划线)和空格(空格,制表符和换行符)的速记字符类.可以在字符类的内部和外部使用.

  • @codaddict:偶然的,刚才我对实际数据的结果进行了基准测试,结果(调用~8300各种文章文章):`/(?:\ s\s + | \n |\t)/`=> 1410(最慢),`/\s + /`=> 611(ok'ish),`/\s\s + /`=> 496(最快).最后一个不会替换单个`\n`或`\ t`,但这对我的情况来说没问题. (25认同)
  • /\s {2,}/u' - 如果你有一些UTF-8问题添加/ u开关 (15认同)
  • 这不应该是正确的答案,因为它也删除了所有换行符,问题是关于空格的...... (2认同)

Som*_*luk 46

$output = preg_replace('/\s+/', ' ',$input);
Run Code Online (Sandbox Code Playgroud)

\ s是简写[ \t\n\r].多个空格将替换为单个空格.


gho*_*g74 39

preg_replace("/[[:blank:]]+/"," ",$input)
Run Code Online (Sandbox Code Playgroud)

  • 不替换"\n"(PHP 5.3),"/\s + /"完成工作.;) (4认同)
  • 与其他答案不同,此命令仅替换空格(不是换行符等...),这正是所需要的!太感谢了! (3认同)