Denke, so sollte es richtig sein. Hatte schon mal ein Tutorial über RegEx begonnen, das werde ich mal heute mit einer zweiten Seite fortsetzen. Wäre die Frage nicht gekommen, hätte ich mir die Fortsetzung des Tutorials für spätere Zeiten aufgespart.
Code: Alles auswählen
<?php
if (isset($_GET["namen"]) and !empty($_GET["namen"])) {
$teststr = trim($_GET["namen"]);
$muster1 = "/(\A([A-Z]{1})([a-zäöüß]+)\s{1,2}([A-Z]{1})([a-zäöüß]+)\Z)/";
$muster2 = "/(\A([A-Z]{1})([a-zäöüß]+)(\s{1,2}|-{1})([A-Z]{1})([a-zäöüß]+)(\s{1,2}|-{1})([A-Z]{1})([a-zäöüß]+)\Z)/";
$muster3 = "/(\A([A-Z]{1})([a-zäöüß]+)(\s{1,2}|-{1})([A-Z]{1})([a-zäöüß]+)\s{1,2}([A-Z]{1})([a-zäöüß]+)(\s{1,2}|-{1})([A-Z]{1})([a-zäöüß]+)\Z)/";
$i = 1;
for ($i; $i <= 3; $i++) {
if ($i === 1) {$muster = $muster1;}
if ($i === 2) {$muster = $muster2;}
if ($i === 3) {$muster = $muster3;}
preg_match($muster, $teststr, $treffer);
if (!empty($treffer[0])) {
echo htmlentities($treffer[0], ENT_QUOTES)."<br>\n<br>\n";
}
}}
echo "\t<form name=\"Eingaben\" action=\"".basename($_SERVER["PHP_SELF"])."\" method=\"get\" accept-charset=\"iso-8859-1\">\n".
"\t<input type=\"text\" name=\"namen\" value=\"\" size=\"30\" maxlength=\"58\">\n".
"\t<input type=\"submit\" value=\"Test\">\n".
"\t</form>\n\n";
?>
Alle Eingaben, die
nicht den Beispielen von Paul Mustermann bis Hans-Paul Mustermann-Krammer entsprechen, werden nicht ausgegeben. Auf Umlaute als Anfangsbuchstaben von Namen wurde verzichtet, da wohl eher eine Seltenheit. Das Beispiel beruht auf ein Dokument mit der Zeichenkodierung ISO-8859-1:
Code: Alles auswählen
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">