PHP - 搜索不需要的字符的字符串

PHP - Search string for unwanted characters

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

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

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

有关详细信息,请参阅 preg_match_all

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

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

<?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"
}