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)。這是你在找什麼? –