Я пишу простое веб-приложение для создания отчетов, которое принимает только небольшое количество символов.
Я читал, что preg_replace отрицательно влияет на производительность.
Это проблема, потому что я хочу перебрать все $ _POST а также $ _GET переменные для очистки их и некоторые из моих форм имеют много полей.
Есть ли более быстрый способ внесения в белый список?
например:
if(isset($_GET["test_1"]) && isset($_GET["test_2"])){
$white_list = str_split('0123456789
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ .,?@_-');
foreach($_GET as $key => &$val){
$val = array_intersect(str_split($val),$white_list);
$val = implode($val);
}
}
Вы можете видеть, что я допускаю только несколько символов для пунктуации.
Пробел, кажется, работает, когда я тестирую в строке URL.
Я также видел, как люди используют str_replace () после разделения ввода на массив и замены символов на «», если их нет в белом списке.
if(isset($_GET["test_1"]) && isset($_GET["test_2"])){
$white_list = str_split('0123456789
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ .,?@_-');
foreach($_GET as $key => &$val){
$char_list = str_split($val);
foreach($char_list as $c){
if(!in_array($c,$white_list)){
$val = str_replace($c,'',$val);
}
}
}
}
Или что-то типа того.
Есть ли прирост производительности?
Как бы я это проверил.
Задача ещё не решена.
Других решений пока нет …