1
我想验证输入(aA-zZ &αΑ-ωΩ)我到目前为止想出了这个,因为正则表达式等并没有完全对付XSS &二阶SQL注入。希腊字母验证PHP字符串
但是,它会打印错误,因为它将希腊字符(“α”)视为2字节字符。
<?php
validate_string_chars("aaαα");
function validate_string_chars($string) {
//$valid_chars = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
//$valid_chars = range('a', 'z');
$english_low = range('a', 'z');
$english_cap = range('A', 'Z');
$greek_low = array('α', 'β');
$greek_cap = array('Α', 'Β');
$valid_chars = array_merge($english_low, $english_cap, $greek_low, $greek_cap);
$errors = 0;
for($i = 0; $i < strlen($string); $i++) {
$char = substr($string, $i, 1);
if (!in_array($char, $valid_chars)) { $errors++; }
}
echo "\n\r".$errors."\n\r";
}
?>
// Results: 4 (2 errors for each "α")
这是一个$字符的var_dump:
string(1) "a"
string(1) "a"
string(1) "�"
string(1) "�"
string(1) "�"
string(1) "�"
代替'strlen',使用'mb_strlen($ string,'UTF8')',我想你还需要'mb_substr'。它是否解决了您的问题?你试过什么样的正则表达式?如果您对正则表达式感兴趣,请分享。 –
你究竟需要什么?检查字符串中的所有字符是否包含在“valid_chars”中的函数? – Amarnasan
不知道,但看看[这个片段](https://ideone.com/RQ9JjC)。这是你在找什么? –