【发布时间】:2022-01-17 21:15:50
【问题描述】:
我正在制作注册脚本,我需要保护字符串免受 a-z、A-Z、0-9 和 _ 以外的字符的影响。有没有简单的方法,例如搜索字符串以查找不在我的允许字符数组中的字符?
【问题讨论】:
标签: php arrays string character
我正在制作注册脚本,我需要保护字符串免受 a-z、A-Z、0-9 和 _ 以外的字符的影响。有没有简单的方法,例如搜索字符串以查找不在我的允许字符数组中的字符?
【问题讨论】:
标签: php arrays string character
您可以使用正则表达式执行搜索:
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"
}
【讨论】: