preg_match of FILTER_VALIDATE_
Ik heb de preg_match die ik gebruikte, veranderd in de filter-functie
Het lijkt te werken, met een paar testjes die gedaan heb.
Maar wat is beter, veiliger, betrouwbaarder, etc.?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
// input van formulier checken
function check_field ($inhoud, $type) {
trim($inhoud); // eventuele spaties verwijderen
switch ($type) {
// controleer een e-mailadres met reguliere expressie
case T_EMAIL:
if (empty($inhoud) || filter_var($inhoud, FILTER_VALIDATE_EMAIL) === FALSE) {
// i.p.v. !preg_match("~(\s|^)([-a-z_][-a-z0-9._]*@[-a-z0-9_]+(?:\.[-a-z0-9_]+)+)\b~si", $inhoud)
return false;
}
else {
return true;
}
break;
// controleer een URL met reguliere expressie
case T_URL:
if (empty($inhoud) || filter_var($url, FILTER_VALIDATE_URL) === FALSE) {
// i.p.v. !preg_match("~(\s|^)((?:[a-z][-a-z0-9+&@#/%?=\~_|!:,.;]+)\.(?:[a-z]{2,6}))\b~si", $inhoud)
return false;
}
else {
return true;
}
break;
default:
return false;
}
}
?>
// input van formulier checken
function check_field ($inhoud, $type) {
trim($inhoud); // eventuele spaties verwijderen
switch ($type) {
// controleer een e-mailadres met reguliere expressie
case T_EMAIL:
if (empty($inhoud) || filter_var($inhoud, FILTER_VALIDATE_EMAIL) === FALSE) {
// i.p.v. !preg_match("~(\s|^)([-a-z_][-a-z0-9._]*@[-a-z0-9_]+(?:\.[-a-z0-9_]+)+)\b~si", $inhoud)
return false;
}
else {
return true;
}
break;
// controleer een URL met reguliere expressie
case T_URL:
if (empty($inhoud) || filter_var($url, FILTER_VALIDATE_URL) === FALSE) {
// i.p.v. !preg_match("~(\s|^)((?:[a-z][-a-z0-9+&@#/%?=\~_|!:,.;]+)\.(?:[a-z]{2,6}))\b~si", $inhoud)
return false;
}
else {
return true;
}
break;
default:
return false;
}
}
?>
klik. Verder:
Wat is het verschil tussen filters en preg_match()?
Filters staan vast (de regels althans) en bij een preg_match maak je zelf een 'variabele' regel waaraan de preg_match zich gaat houden.
Wat is veiliger? Filters of preg_match()?
Beiden. Voor de ene taak is filters beter (of even goed) en voor de andere taak is preg_match() beter (of even goed). Voor email validatie is preg_match() wat handiger, omdat je het enorm kunt uitbreiden. Bij de email filter staat het hard-coded in de PHP ingebouwd, dus daar kun je niets aan veranderen. Je kunt wel weer een call_back_function gebruiken, maar dan is preg_match() weer wat directer.
Wat info over filters: Wat is het verschil tussen filters en preg_match()?
Filters staan vast (de regels althans) en bij een preg_match maak je zelf een 'variabele' regel waaraan de preg_match zich gaat houden.
Wat is veiliger? Filters of preg_match()?
Beiden. Voor de ene taak is filters beter (of even goed) en voor de andere taak is preg_match() beter (of even goed). Voor email validatie is preg_match() wat handiger, omdat je het enorm kunt uitbreiden. Bij de email filter staat het hard-coded in de PHP ingebouwd, dus daar kun je niets aan veranderen. Je kunt wel weer een call_back_function gebruiken, maar dan is preg_match() weer wat directer.