【问题标题】:Remove all non-alphanumeric characters using preg_replace使用 preg_replace 删除所有非字母数字字符
【发布时间】:2012-07-04 11:35:53
【问题描述】:

如何从 PHP 中的字符串中删除所有非字母数字字符?

这是我目前正在使用的代码:

$url = preg_replace('/\s+/', '', $string);

它只替换空格。

【问题讨论】:

标签: php regex preg-replace


【解决方案1】:
$url = preg_replace('/[^\da-z]/i', '', $string);

【讨论】:

  • 万一其他人第一眼看到 Xeoncross 的评论时会感到困惑,他的意思是答案支持 Unicode 字符。但是 Xeoncross 链接中的解决方案确实
【解决方案2】:

一开始我会这样做

$str = 'qwerty!@#$@#$^@#$Hello%#$';

$outcome = preg_replace("/[^a-zA-Z0-9]/", "", $str);

var_dump($outcome);
//string(11) "qwertyHello"

希望这会有所帮助!

【讨论】:

    【解决方案3】:

    不知道为什么没有其他人建议这样做,但这似乎是最简单的正则表达式:

    preg_replace("/\W|_/", "", $string)
    

    您也可以在这里看到它的实际效果:http://phpfiddle.org/lite/code/0sg-314

    【讨论】:

    • 同时最简单高效的是preg_replace("/[\W_]+/", "", $string)
    【解决方案4】:

    你可以使用,

    $url = preg_replace('/[^\da-z]/i', '', $string);
    

    您可以用于 unicode 字符,

    $url = preg_replace("/[^[:alnum:][:space:]]/u", '', $string);
    

    【讨论】:

      【解决方案5】:
      preg_replace('/[\s\W]+/', '', $string)
      

      似乎有效,实际上该示例在 preg_replace 上的 PHP 文档中

      【讨论】:

      • 请记住,这将保留下划线,因为它们被视为单词字符并保留空格
      • 我不知道下划线,但它不保留空格。
      【解决方案6】:
      $alpha = '0-9a-z'; // what to KEEP
      $regex = sprintf('~[^%s]++~i', preg_quote($alpha, '~')); // case insensitive
      
      $string = preg_replace($regex, '', $string);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-30
        • 1970-01-01
        • 2013-11-29
        • 1970-01-01
        • 2014-04-26
        • 2013-01-19
        • 2021-02-25
        相关资源
        最近更新 更多