Regulären ausdruck einbinden?

Takuto

Grünschnabel
hallo,

folgendes Problem:

Ich würd gern in mein aktuelles PHP formular script reguläre ausdrücke einbaun um die email, telefonnummer und das geburtsdatum zu überprüfen aber ich weiß nich wie und wo ich das am besten reinschreib damit das klappt...

hier mal der überprüfungsteil meines php codes:
PHP:
if($_POST["submit"] == "Senden"){
	
	if(
				empty($_POST['name']) || $_POST['name'] == ' ' ||
				empty($_POST['strasse']) || $_POST['strasse'] == ' ' ||
				empty($_POST['plz']) || $_POST['plz'] == ' ' ||
				empty($_POST['ort']) || $_POST['ort'] == ' ' ||
				empty($_POST['email']) || $_POST['email'] == ' ' ||
				empty($_POST['birthday']) || $_POST['birthday'] == ' ' ||
				empty($_POST['Vorwahl']) || $_POST['Vorwahl'] == ' ' ||
				empty($_POST['Telefon']) || $_POST['Telefon'] == ' '
			) {
				echo '<p class="error2">Es wurden nicht alle Pflichtfelder ausgef&uuml;llt! Fehlerhafte Felder wurden Rot markiert.</p>';	
			} else {

$anrede = $_POST["Anrede"];
$von = $_POST["name"];
$geburtstag = $_POST["birthday"];
$email = $_POST["email"];
$strasse = $_POST["strasse"];
$ort = $_POST["plz"]." ".$_POST["ort"];
$telefon = $_POST["Vorwahl"]." ".$_POST["Telefon"];
$fax = $_POST["VorwahlFax"]." ".$_POST["Telefax"];
$mobil = $_POST["VorwahlMobil"]." ".$_POST["Mobil"];
$grund = $_POST["Anfragegrund"];
$taetigkeit = $_POST["taetigkeit"];
$eigenschaft = $_POST["eigenschaft"];
$bedeutung = $_POST["bedeutung"];
$firma = $_POST["firma"];
$einkommen = $_POST["einkommen"];
$prioritaet = $_POST["prioritaet"];
$wichtigweil = $_POST["wichtigweil"];
$stunden = $_POST["stunden"];

hoffe mir kann jemand helfen.
Vielen dank im voraus.
 
und wie genau schreib ich das rein damit er das überprüft?

irgendwas in der richtung?
PHP:
eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$email )
 
Genau, wenn du irgendwas in der Richtung häufiger gebrauchst, solltest du dir gedanken machen die Grundlagen zu erlernen.

eregi() ist seit PHP 5.3 nicht mehr zu empfehlen, stattdessen sollte man preg_match() verwenden.

Du hast doch schon einige Überprüfungen in deinem Konstrukt, hier einfach noch die Überprüfung für die Email mit dem Pattern hinzufügen:

PHP:
$pattern = 'Dein Pattern';
$Email = $_POST['email'];

if(preg_match($pattern, $Email)){
  echo "Die Email-adresse ist nicht korrekt!";
}

// Ab PHP 5.3 stehen auch diverse Filter zur verfügung:
if(filter_var($Mail, FILTER_VALIDATE_EMAIL)) echo 'Korrekte Mail-Validierung';
 
müsste das dann so stimmen?

PHP:
$epattern = '^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$';
$Email = $_POST['email'];



if($_POST["submit"] == "Senden"){
	
	if(preg_match($epattern, $Email)){
	echo '<p class="error2">E-Mail Adresse ist nicht korrekt!</p>';
	}

EDIT: ok so gehts irgendwie nicht... werd ich wohl doch erst etwas rumlesen müssen =/
 
Zuletzt bearbeitet:
PHP:
if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
{
        echo 'Email nicht korrekt!';
}

Danke. Das klappt wunderbar. Und wie könnt ich das jetzt mit der Telefonnummer und dem Geburtsdatum anstellen? dafür gibts ja keine "vrogefertigten" standard befehle ... Müsste demnach ja mit nem Pattern gemacht werden wie ich es oben schon versucht habe.. klappt aber irgendwie nicht so ganz. Kann mir jemand sagen wo der Fehler ist?

mal angenommen das ist ein regulärer ausdruck für ne telefonnummer oder ein geburtsdatum.
PHP:
$epattern = '^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$';
$Email = $_POST['email'];


if($_POST["submit"] == "Senden"){
    
    if(preg_match($epattern, $Email)){
    echo '<p class="error2">E-Mail Adresse ist nicht korrekt!</p>';
    }


EDIT: ok das mit der telefonnummer ist gelöst... nun hab ich ein adneres problem. Und zwar das Datum. Wie kann ich kontrollieren dass es bei den ersten beiden ziffern nur bis 31 gehen darf und beim Monat nur bis 12? und beim Jahr nur bis 2011? hier mein jetziger code:

PHP:
if (!preg_match("/^\d{1,2}\.\d{1,2}\.\d{4}$/", $Bday)) 
	{
        echo '<p class="error2">Bitte geben sie ein gültiges Geburtsdatum an</p>';
	}
 
Zuletzt bearbeitet:
Hallo,

du kannst nach dem regulären Ausdruck mittels checkdate prüfen, ob das Datum ein gültiges Datum ist. Das Datum kannst du mittels
PHP:
list ($tag, $monat, $jahr) = explode (".", $Bday);
in ein Array zerlegen und die entsprechenden Arrayteile dann der Funktion checkdate übergeben:
PHP:
if (!preg_match("/^\d{1,2}\.\d{1,2}\.\d{4}$/", $Bday) || !checkdate ($monat, $tag, $jahr))

Grüße BN
 
Zurück