preg_replace所有空格

use*_*521 24 php

我正在尝试用下划线替换所有空格,以下内容不起作用:

$id = "aa aa";
echo $id;
preg_replace('/\s+/', '_', $id);
echo $id;
Run Code Online (Sandbox Code Playgroud)

版画

aa aaaa aa
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 59

该函数preg_replace不会就地修改字符串.它返回一个带有替换结果的新字符串.您应该将回调结果分配给$id变量:

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

  • 请注意,如果您的页面使用UTF-8编码,则必须将unicode修饰符添加到正则表达式的末尾,因此它变为preg_replace('/ \ s + / u','_',$ id);。添加失败可能会导致您的UTF-8编码文本中的字符无效。参见:/sf/ask/3069439131/ (2认同)

Cli*_*ive 15

我认为这str_replace()可能更合适:

$id = "aa aa";
$id = str_replace(' ', '_', $id);
echo $id;
Run Code Online (Sandbox Code Playgroud)

  • @VincentSavard:"用下划线替换所有空格"......我认为它确实:) (3认同)
  • @VincentSavard:他还说"以下内容不起作用",这意味着他的代码对于他想要完成的内容是不正确的,即"用下划线替换所有空格".我同意它可能是模棱两可的:) (2认同)

Mar*_*in. 12

你忘了把结果分配preg_replace到你的$id

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


小智 6

有时,在 linux/unix 环境中,

$strippedId = preg_replace('/\h/u', '',  $id);
Run Code Online (Sandbox Code Playgroud)

也试试这个。