This is the updated code. I've put the utf8_decode there because I've noticed that Flash form send its values utf8 encoded. So a name like René would show as something like Ren%8 (well, not exactly, but you know what I mean).
But anyway, using this worked for accented letters, so René was send as René to the php script. But now I notice that apostrophes are labelled as false, but I've regex tested my regex:
preg_match('~[a-zÀ-ÿ][\'a-zÀ-ÿ -]*$~i', $naam))
and when I give it a name like Rene O'Brien, is should be true, but it gives a false?
Do you know what's wrong?
<?php
/* Emailinstellingen */
$to = "info@testsite.nl";
$subject = "Een mailtje via de website";
$naam = utf8_decode($_POST["naam"]);
$email = utf8_decode($_POST["email"]);
$bericht = utf8_decode($_POST["bericht"]);
/* Kijken of er wel een echte naam is ingevuld */
/* Ook de mogelijkheid voor accenttekens open laten */
if (!preg_match('~^[a-zÀ-ÿ][\'a-zÀ-ÿ \-]*$~i', $naam)) {
$naam = "error";
echo "&naam=error&";
} else {
echo "&naam=correct&";
}
/* Kijken of er wel een echt email is ingevuld */
if (!preg_match('~^[a-z0-9][a-z0-9_.\-]*@([a-z0-9]+\.)*[a-z0-9][a-z0-9\-]+\.([a-z]{2,6})$~i', $email)) {
$email = "error";
echo "&email=error&";
} else {
echo "&email=correct&";
}
/* Verwijder html en php tags uit bericht */
$bericht = strip_tags($bericht);
if (!$bericht) {
$email = "error";
echo "&bericht=error&";
} else {
echo "&bericht=correct&";
}
/* Alles ingevuld en geldig emailadres? Dan versturen */
if ($naam != "error" && $email != "error" && $bericht != "error") {
$message = "Naam:\r\n".$naam."\r\n\r\n";
$message .= "Emailadres:\r\n".$email."\r\n\r\n";
$message .= "Bericht:\r\n".stripslashes($bericht)."\r\n";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";
$headers .= "From: ".mb_encode_mimeheader($naam, "iso-8859-1", "Q")." <".$email.">\r\n";
mail($to, $subject, $message, $headers);
}
?>