【问题标题】:Stripping everything but alphanumeric chars from a string in PHP从 PHP 中的字符串中删除除字母数字字符之外的所有内容
【发布时间】:2010-10-24 20:47:23
【问题描述】:

我想要一个正则表达式或其他字符串,它可以替换字符串中除字母数字字符(a-z0-9)之外的所有内容。所有诸如,@#$(@*810 之类的东西都应该被剥离。有什么想法吗?

编辑:我现在需要它来去除所有内容,但允许点,所以除了a-z, 1-9, . 之外的所有内容。想法?

【问题讨论】:

    标签: php regex string


    【解决方案1】:

    这也适用于用下划线替换除数字、单词字符或句点之外的任何内容。对文件名很有用。

    $clean = preg_replace('/[^\d\w.]+/', '_', $string);
    

    【讨论】:

      【解决方案2】:
      $string = preg_replace("/[^a-z0-9.]+/i", "", $string);
      

      匹配一个或多个非 a-z 0-9 [不区分大小写] 或“.”的字符并替换为“”

      【讨论】:

      • 我怎样才能改变它只允许点(即)?
      • 字符集中的点不需要转义。
      • 您真的需要+ 符号吗?有人在下面发帖,没有+ 符号。
      • @kuchi:非常老的问题,但我刚刚遇到它:如果你用空字符串替换它并没有什么区别。如果你用其他东西代替它确实会有所作为,比如破折号("-")。使用+,它会将"test$!§test" 更改为"test-test"。如果没有"+",它将更改为"test---test"
      【解决方案3】:
      /[^a-z0-9.]/
      

      应该做的伎俩

      【讨论】:

      • 我怎样才能改变它只允许点(即)?
      • 请填写完整的正则表达式?我不知道语法
      【解决方案4】:

      我喜欢为此使用 [^[:alnum:]],这样可以减少出错的空间。

      preg_replace('/[^[:alnum:]]/', '', "(ABC)-[123]"); // returns 'ABC123'
      

      【讨论】:

        【解决方案5】:

        试试:

        $string = preg_replace ('/[^a-z0-9]/i', '', $string);
        

        /i 代表不区分大小写(当然,如果你需要的话)。

        【讨论】:

          猜你喜欢
          • 2011-11-08
          • 1970-01-01
          • 2012-10-24
          • 1970-01-01
          • 1970-01-01
          • 2014-03-01
          • 2017-09-01
          • 1970-01-01
          • 2013-08-08
          相关资源
          最近更新 更多