如何用PHP替换字符串中的特殊字符?

did*_*ido -6 php regex

我有下面的字符串:

a&b.c'd,e f
Run Code Online (Sandbox Code Playgroud)

我怎么样

?_b_c_d_e_f
Run Code Online (Sandbox Code Playgroud)

看起来像正则表达式模式?

提前致谢 !

rai*_*7ow 7

看起来很简单......

$str = "a&b.c'd,e f";
$str = preg_replace('#\W#', '_', $str);
Run Code Online (Sandbox Code Playgroud)

...但它实际上应该取决于认为特殊的字符,\W相当于[^a-zA-Z0-9_](即任何不是字母数字或'_'的字符).在您的情况下,这可能是也可能不够; 如果没有,也许你只是在这里使用一个角色类:

$str = "a&b.c'd,e f";
$str = preg_replace('#[^a-zA-Z0-9_-]#', '_', $str);
Run Code Online (Sandbox Code Playgroud)

在此示例中,连字符'-'也不会被替换.