Dies ist eine alte Version des Dokuments!
https://www.w3schools.com/php/php_regex.asp
$zeichenkette = "test fTest 123"; $muster = "/[234]+/"; $muster = "/* [A-Z].*/"; $muster = "/*www*/"; $matches=[]; $frage = preg_match($muster,$zeichenkette, $matches); //$frage = preg_match($muster,$langerText, $matches); if($frage){ print("mit ".$muster); }else{ echo("ohne ".$muster); }
<?php // reguläre Ausdrücke (regular expressions = regex) // preg_match() returnt true oder false, wenn ein Muster // in einer Zeichenkette gefunden wird oder nicht $str = "Mart1in"; // könnte aus Formular etc. kommen $pattern = "/^[^0-9]*$/"; // slash ist der Beginn und Ende des regex /** * /(Anfang regex) * ^ überprüft Anfang des Textes, hier: das 1. Zeichen darf keine Zahl haben * [] überprüft, ob eines der Zeichen innerhalb der Klammer enthalten ist, * allerdings gilt das nur für das erste Zeichen und wenn man die * Klammer noch mal einfügt, für das zweite und so weiter * ^innerhalb der eckigen Klammern verneinend, in den * eckigen Klammern wird nun überprüft, ob die Zeichen nicht * enthalten sind * 0-9 ... in diesem Fall soll überprüft werden, ob keine * Ziffern in der Zeichenkette sind * * hier: alle 0-n Zeichen zwischen erstem und letztem Zeichen * dürfen keine Zahl sein * $ überprüft das Ende einer Zeichenkette, hier: das letzte Zeichen darf keine Ziffern haben * / Ende des regex * für den Ausdruck [0-9] kann man auch [\d] (digits) nehmen * statt [^\d] kann man auch [\D] nehmen, um Zahlen zu verneinen, * hier kann man überlegen, ob man nicht lieber 3 Zeichen statt einem * macht, dafür aber später den Code verstehen * (mehr davon Link: https://www.w3schools.com/php/php_regex.asp) */ // preg_match(muster, zeichenkette); <-Reihenfolge der Übergabeparameter if( preg_match($pattern, $str) ){ echo("Zeichenkette keine Ziffern"); } else { echo("Zeichenkette enthält Ziffern"); } $var = "ausprobieren"; echo ('<br>--------$var--------<br>'); //wenn man bei echo ""-Anführungsstriche nimmt, gibt er Inhalt v Variable aus, // bei ''-Anführungszeichen gibt er $var aus, nicht den Inhalt // deswegen bei echo "" angewöhnen // Schreibe einen Regex, der eine beliebige Zeichenkette erkennt, // die mit einem Großbuchstaben beginnt. [A-Z] $str2 = "tina"; $pattern2 = "/^[A-Z]/"; if( preg_match($pattern2, $str2) ){ echo("Zeichenkette fängt groß an"); } else { echo("Zeichenkette fängt nicht groß an"); } /** * wenn ich auf ein Symbol prüfen will, das schon als Befehl vergeben ist, * benutze ich Backslash, um das als */ echo ("<br>---------------<br>"); $strUml = "Özkan"; $patternUml = "/^[A-ZÖÄÜ]/"; if( preg_match($patternUml, $strUml) ){ echo("Zeichenkette fängt groß an"); } else { echo("Zeichenkette fängt nicht groß an"); } echo ("<br>---------------<br>"); /** * prüfen, ob mehrere von einem vorkommt, z. B. www in URL */ $strURL = "www.msp-world.de"; $patternURL = "/^w{3}/"; // es ist kein Zeichenvorrat, deswegen sind [] bei einem Zeichen nicht nötig if( preg_match($patternURL, $strURL) ){ echo("beginnt mit www"); } else { echo("beginnt nicht mit www"); } // wenn man "/^w{3,5}/" eingibt, kann man eine Untergrenze und Obergrenze festlegen //OHNE Leerzeichen hinter dem Komma echo ("<br>---------------<br>"); /** * prüfen einer E-Mail */ $mail = "www.msp-world.de"; $patternMail = "/^[A-Za-z0-9._%+-/]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/"; if( preg_match($patternURL, $strURL) ){ echo("valide Mailadresse"); } else { echo("invalide Mailadresse"); } ?>