【问题标题】:Replace all characters except letters, numbers, spaces and underscores [closed]替换除字母、数字、空格和下划线以外的所有字符[关闭]
【发布时间】:2011-09-20 11:51:35
【问题描述】:

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

有人可以举个例子吗?

【问题讨论】:

  • 您发现哪些示例不起作用?他们怎么不工作?
  • 我还要补充一点,对于各种字符串操作问题,如果您提供一个或两个具体示例来说明您将要进行操作以及您想要什么,这将有助于获得正确的答案摆脱操纵。

标签: php regex preg-replace ereg-replace


【解决方案1】:

我通常使用类似的东西:

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

这将所有非空格和非单词字符替换为空。

【讨论】:

  • 你应该在 PHP 中为正则表达式使用单引号 preg_replace('/[^ \w]+/', '', $string) 带有 \ 的双引号会导致意外行为
  • 你应该说所有非英文字符,例如它也删除了西里尔符号
【解决方案2】:
[^0-9a-zA-Z_\s] 

是你要替换的。

【讨论】:

  • 这个帮助我解决了一个类似的问题。谢谢! (对于阅读本文的其他人,不要忘记将其用斜线括起来:$new_string=preg_replace('/[^0-9a-zA-Z_]/',"",$old_string) 我去掉了 \s,因为我不需要允许空格。
  • \s 并不总是意味着空间...
【解决方案3】:
<?php
$string = 'April 15, 2003';
$pattern = '/[^\w ]+/';
$replacement = '';
echo preg_replace($pattern, $replacement, $string);
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多