替换除字母、数字、空格和下划线以外的所有字符

48

我希望替换字符串中除字母、数字、空格和下划线以外的所有字符。

能否提供一个示例?


你找到了哪些不起作用的例子?它们为什么不起作用? - BoltClock
1
我还要补充的是,在涉及字符串操作的问题中,如果您提供一两个具体的示例,说明您将进行哪些操作以及您希望从操作中得到什么结果,那么就更容易得到正确的答案。 - EBGreen
3个回答

92

我通常使用类似以下的代码:

$string = preg_replace("/[^ \w]+/", "", $string);

该代码将所有非空格和非单词字符替换为空格。


14
在PHP中,对于正则表达式应该使用单引号,例如preg_replace('/[^ \w]+/', '', $string)。在包含反斜杠的双引号中使用可能会导致意外的行为。请注意,本翻译保持了原文意思的基础上尽量使语言通俗易懂,并删去了解释和额外内容。 - DarkMukke
请将以下与编程有关的内容从英语翻译成中文。仅返回翻译后的文字:您应该说出所有非英文字符,例如它也会删除西里尔符号 - Eugene

31
[^0-9a-zA-Z_\s] 

是您想要替换的内容。


19
这个对我解决类似问题很有帮助。谢谢!(给其他人看的话,别忘了像这样用斜杠把它括起来:$new_string=preg_replace('/[^0-9a-zA-Z_]/',"",$old_string) 我去掉了 \s,因为我不需要允许空格。) - TecBrat
1
\s 并不总是表示空格... - Vishal Kumar Sahu

8
<?php
$string = 'April 15, 2003';
$pattern = '/[^\w ]+/';
$replacement = '';
echo preg_replace($pattern, $replacement, $string);
?>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接