reguliere expressies en verbeterpunten
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
if(empty($naam) OR !preg_match("/^[a-zA-Z0-9_-\s\.\,\?\!ëËéÉêÊïÏíÍöÖóÓäÄáÁ]+$/", $naam))
$error_array[] = "Vul uw naam of bedrijfsnaam in";
if(empty($email) OR !filter_var($email, FILTER_VALIDATE_EMAIL))
$error_array[] = "Vul een geldig email adres in";
if(!empty($postcode) && !preg_match('/^[1-9][0-9]{3} ?[a-z]{2}$/i', $postcode))
$error_array[] = "Vul een geldige postcode in";
if(empty($website) OR !filter_var($website, FILTER_VALIDATE_URL))
$error_array[] = "Vul een geldige URL in naar uw website";
if(!empty($facebook) AND !filter_var($facebook, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED) OR !empty($facebook) AND strpos($facebook, "facebook.com") === FALSE)
$error_array[] = "Vul een geldige URL in naar uw Facebook profiel";
if(!empty($twitter) AND !filter_var($twitter, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED) OR !empty($twitter) AND strpos($twitter, "twitter.com") === FALSE)
$error_array[] = "Vul een geldige URL in naar uw Twitter account";
if(empty($keywords) OR !preg_match("/^[a-zA-Z0-9\-\,\s\.\?\!ëËéÉêÊïÏíÍöÖóÓäÄáÁ]+$/", $keywords) OR strlen($keywords) > 100)
$error_array[] = "Vul keywords in gescheiden door een komma";
if(empty($description) OR strlen($description) > 156 OR strlen($description) < 50 OR !preg_match("/^[a-zA-Z0-9\-\,\s\.\?\!ëËéÉêÊïÏíÍöÖóÓäÄáÁ]+$/", $description))
$error_array[] = "Gebruik minstens 50 en maximaal 156 tekens in de description";
if(empty($artikel) OR strlen(htmlspecialchars_decode($artikel)) > 1750 OR strlen(htmlspecialchars_decode($artikel)) < 500)
$error_array[] = "Gebruik minstens 500 en maximaal 1750 tekens in het artikel";
if(preg_match("/(http\:\/\/|https\:\/\/|ftp:\/\/|ftps:\/\/|www\.)/i", $artikel))
$error_array[] = "Het gebruiken van links in een artikel is niet toegestaan";
?>
if(empty($naam) OR !preg_match("/^[a-zA-Z0-9_-\s\.\,\?\!ëËéÉêÊïÏíÍöÖóÓäÄáÁ]+$/", $naam))
$error_array[] = "Vul uw naam of bedrijfsnaam in";
if(empty($email) OR !filter_var($email, FILTER_VALIDATE_EMAIL))
$error_array[] = "Vul een geldig email adres in";
if(!empty($postcode) && !preg_match('/^[1-9][0-9]{3} ?[a-z]{2}$/i', $postcode))
$error_array[] = "Vul een geldige postcode in";
if(empty($website) OR !filter_var($website, FILTER_VALIDATE_URL))
$error_array[] = "Vul een geldige URL in naar uw website";
if(!empty($facebook) AND !filter_var($facebook, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED) OR !empty($facebook) AND strpos($facebook, "facebook.com") === FALSE)
$error_array[] = "Vul een geldige URL in naar uw Facebook profiel";
if(!empty($twitter) AND !filter_var($twitter, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED) OR !empty($twitter) AND strpos($twitter, "twitter.com") === FALSE)
$error_array[] = "Vul een geldige URL in naar uw Twitter account";
if(empty($keywords) OR !preg_match("/^[a-zA-Z0-9\-\,\s\.\?\!ëËéÉêÊïÏíÍöÖóÓäÄáÁ]+$/", $keywords) OR strlen($keywords) > 100)
$error_array[] = "Vul keywords in gescheiden door een komma";
if(empty($description) OR strlen($description) > 156 OR strlen($description) < 50 OR !preg_match("/^[a-zA-Z0-9\-\,\s\.\?\!ëËéÉêÊïÏíÍöÖóÓäÄáÁ]+$/", $description))
$error_array[] = "Gebruik minstens 50 en maximaal 156 tekens in de description";
if(empty($artikel) OR strlen(htmlspecialchars_decode($artikel)) > 1750 OR strlen(htmlspecialchars_decode($artikel)) < 500)
$error_array[] = "Gebruik minstens 500 en maximaal 1750 tekens in het artikel";
if(preg_match("/(http\:\/\/|https\:\/\/|ftp:\/\/|ftps:\/\/|www\.)/i", $artikel))
$error_array[] = "Het gebruiken van links in een artikel is niet toegestaan";
?>
En dan als laatste, ik laat mensen een postcode invoeren, de ene keer voert iemand 1000AB in en de andere keer 1000 AB, hoe kan ik deze spatie filteren en dan er weer inzetten na het 4e teken in de string? Zodat alle postcodes hetzelfde worden opgeslagen!
Met smart wacht ik op jullie (kritische) antwoorden en vragen! :)
Toevoeging op 16/12/2012 19:28:59:
Sorry maar, *bump*, er moeten toch wel wat kritische ogen op phphulp.nl zijn? De gedachte achter de if statements lijken mij duidelijk alleen ik denk dat het beter kan...
Gewijzigd op 16/12/2012 19:29:28 door Dylan PHP
Maar als je toch wat opmerkingen wilt hebben valt mijn oog op de diakritische tekens. Hoe zijn die gecodeerd? Waarschijnlijk in UTF8, tegenwoordig. En als dat het geval is dan moet je waarschijnlijk de "u" pattern modifier toevoegen.
En wat is het probleem met die postcode? Gewoon spaties strippen dacht ik.
En natuurlijk wil je ook checken met preg_match dat het resultaat bestaat uit 4 letters en 2 cijfers.
De postcode heb ik inmiddels opgelost als volgt
Code (php)
Wat bedoelde je precies met dat coderen?
Gewijzigd op 16/12/2012 22:21:36 door Dylan PHP
Donald, met coderen bedoel ik de character set. Als je gekozen hebt voor UTF-8 (een moderne standaard) dan wordt een ë (e met trema) gecodeerd met twee bytes: 0xC3 en 0xAB. Als je dan de regular expression "/[a-zë]/" dan verwacht je dat dit betekent: de letters a-z of ë. Maar dat kan dan wel opgevat worden als: de letters a-z of 0xC3 of 0xAB. Je kunt aangeven dat de regular expression UTF-8 tekens bevat met de regular expression: "/[a-zë]/u". In dat geval worden multi-byte characters als één character behandeld.
Oké bedankt, heb het toegevoegd :)