Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Both sides previous revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
|
php:preg [2017/04/18 17:55] webproducer Zweites Beispiel hinzugefügt |
php:preg [2020/10/05 10:18] (aktuell) webproducer Beispiel 3 ergänzt |
||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== Reguläre Ausdrücke mit preg_match ====== | + | ====== Reguläre Ausdrücke ====== |
| - | ===== Beispiel 1 ===== | + | ===== Beispiel 1: preg_match ===== |
| ==== Aufgabe ==== | ==== Aufgabe ==== | ||
| - | Wir wollen aus dem Ergebnis des Aufrufs der JavaScript-Funktion "navigator.appVersion" im Browser Google Chrome die Versionsnummer herausfiltern. | + | Aus dem Ergebnis des Aufrufs der JavaScript-Funktion "navigator.appVersion" im Browser Google Chrome soll die Versionsnummer herausfiltert werden. |
| ==== PHP-Code ==== | ==== PHP-Code ==== | ||
| Zeile 12: | Zeile 12: | ||
| $appVersion = "5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"; | $appVersion = "5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"; | ||
| - | if( preg_match( '/Chrome\/[0-9.]{1,}/', $appVersion, $result ) ) | + | if( preg_match( '/Chrome\/(?P<Version>[0-9.]{1,})/', $appVersion, $result ) ) |
| { | { | ||
| - | echo $result[0]; // Ergebnis: "Chrome/57.0.2987.133" | + | echo $result[2]; // Ergebnis: "57.0.2987.133" |
| } | } | ||
| </code> | </code> | ||
| ==== Erläuterung des regulären Ausdrucks ==== | ==== Erläuterung des regulären Ausdrucks ==== | ||
| + | |||
| + | ///Chrome\/(?P<Version>[0-9.]{1,})/// | ||
| ^Ausdruck^Bedeutung^ | ^Ausdruck^Bedeutung^ | ||
| Zeile 24: | Zeile 26: | ||
| |Chrome|Das Wort "Chrome"| | |Chrome|Das Wort "Chrome"| | ||
| |\/|das escapte "Slash"-Zeichen hinter dem Wort "Chrome"| | |\/|das escapte "Slash"-Zeichen hinter dem Wort "Chrome"| | ||
| + | |(|Beginn des Teilsuchmusters| | ||
| + | |?P<Version>|Teilsuchmuster mit dem Namen "Version" benannt| | ||
| |[0-9.]|Alle Ziffern von 0 bis 9 inklusive Punkt| | |[0-9.]|Alle Ziffern von 0 bis 9 inklusive Punkt| | ||
| - | |{1,}|das Vorangestellte Zeichen muss mindestens einmal und darf beliebig oft vorkommen| | + | |{1,}|die vorangestellten Zeichen müssen mindestens einmal und dürfen beliebig oft vorkommen| |
| + | |)|Ende des Teilsuchmusters| | ||
| |/|Muster-Begrenzungszeichen am Ende| | |/|Muster-Begrenzungszeichen am Ende| | ||
| + | |||
| + | //Erläuterung:// Die PHP-Funktion "preg_match" sucht nach der ersten Übereinstimmung und gibt im Erfolgsfall "true" zurück. Daher ist das Ergebnis nicht im Rückgabewert der Funktion, sondern im 3. Parameter ("$result") zu finden. Durch die Klammersetzung werden zwei Gruppen erstellt. Deshalb enthält das Ergebnis-Array drei Einträge: | ||
| + | |||
| + | * $result[0] = gesamtes Suchmuster: "Chrome/57.0.2987.133" | ||
| + | * $result[version] = abgegrenztes, benanntes Teilsuchmuster: "57.0.2987.133" | ||
| + | * $result[1] = abgegrenztes, unbenanntes Teilsuchmuster: "57.0.2987.133" | ||
| + | |||
| + | Somit können wir durch die Gruppierung unser gewünschtes Ergebnis in $result[version] finden. | ||
| + | |||
| + | Wenn die Suche nach der ersten Übereinstimmung fortgesetzt werden soll, ist die Funktion "preg_match_all" (siehe Beispiel 2) zu verwenden. | ||
| ---- | ---- | ||
| - | ===== Beispiel 2 ===== | + | ===== Beispiel 2: preg_match_all ===== |
| ==== Aufgabe ==== | ==== Aufgabe ==== | ||
| Zeile 93: | Zeile 108: | ||
| </code> | </code> | ||
| - | ==== Erläuterung des regulären Ausdrucks '/\s\d{1,},?\d{0,2}\s(Euro|€)/'==== | + | ==== Erläuterung des regulären Ausdrucks ==== |
| + | |||
| + | ///\s\d{1,},?\d{0,2}\s(Euro|€)/// | ||
| ^Ausdruck^Bedeutung^ | ^Ausdruck^Bedeutung^ | ||
| Zeile 107: | Zeile 124: | ||
| |(Euro €)|Es muss das Wort "Euro" oder das "€"-Zeichen vorkommen| | |(Euro €)|Es muss das Wort "Euro" oder das "€"-Zeichen vorkommen| | ||
| |/|Muster-Begrenzungszeichen am Ende| | |/|Muster-Begrenzungszeichen am Ende| | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Beispiel 3: src aus Image-Tag extrahieren ===== | ||
| + | |||
| + | <code php> | ||
| + | if( preg_match( '/src=[\"\']([^\"\']+)/', $imgTag, $result ) ) | ||
| + | { | ||
| + | $src = $result[1]; | ||
| + | } | ||
| + | </code> | ||
| ---- | ---- | ||
| Zeile 113: | Zeile 141: | ||
| * [[http://regexr.com/|Online Ausdrucks-Editor mit Echtzeitprüfung]] | * [[http://regexr.com/|Online Ausdrucks-Editor mit Echtzeitprüfung]] | ||
| + | * [[https://danielfett.de/2006/03/20/regulaere-ausdruecke-tutorial/|Super Tutorial mit praktischen Beispielen!]] | ||
| * [[http://webdesign.tepelmann.com/PHP_Beispiele_fuer_Regulaere_Ausdruecke.html#Jahreszahl|PHP-Beispiele für Reguläre Ausdrücke]] | * [[http://webdesign.tepelmann.com/PHP_Beispiele_fuer_Regulaere_Ausdruecke.html#Jahreszahl|PHP-Beispiele für Reguläre Ausdrücke]] | ||