【问题标题】:PHP - Search string for unwanted charactersPHP - 搜索不需要的字符的字符串
【发布时间】:2022-01-17 21:15:50
【问题描述】:

我正在制作注册脚本,我需要保护字符串免受 a-z、A-Z、0-9 和 _ 以外的字符的影响。有没有简单的方法,例如搜索字符串以查找不在我的允许字符数组中的字符?

【问题讨论】:

    标签: php arrays string character


    【解决方案1】:

    您可以使用正则表达式执行搜索:

    preg_match_all('/[^A-Za-z0-9_]/', $string, $matches);

    更多详情请见preg_match_all

    基本上,您正在搜索指定列表中不存在的字符。匹配存储在$matches。 如果返回的数组为空,则字符串通过,否则数组中包含不允许的字符。

    【讨论】:

      【解决方案2】:

      这通常通过正则表达式来完成,它允许在字符集中进行搜索:

      <?php
      $input = [
        "abcde",
        "XXX111XXX",
        "o",
        "l#QW+E,+???P#WE094<SDF",
        "```",
        "GGGG#",
        "",
        "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
      ];
      
      $output = array_filter($input, function($value) {
        return preg_match('/^[a-zA-Z0-9]+$/', $value);
      });
      
      var_dump($output);
      

      输出显然是:

      array(4) {
        [0]=>
        string(5) "abcde"
        [1]=>
        string(9) "XXX111XXX"
        [2]=>
        string(1) "o"
        [7]=>
        string(62) "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-18
        • 1970-01-01
        • 2012-07-23
        • 2016-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-31
        相关资源
        最近更新 更多