Benutzer-Werkzeuge

Webseiten-Werkzeuge


ibex:kursinhalte:kursteil2:regex

reguläre Ausdrücke

<?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");
 }
?>

https://www.w3schools.com/php/php_regex.asp

/volume1/web/dokuwiki/data/pages/ibex/kursinhalte/kursteil2/regex.txt · Zuletzt geändert: 2025/04/12 07:40 von 47.128.39.8