Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Both sides previous revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
|
php:preg [2017/04/19 07:30] webproducer Beispiel 1 um Gruppierung ergänzt |
php:preg [2020/10/05 10:18] (aktuell) webproducer Beispiel 3 ergänzt |
||
|---|---|---|---|
| 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[2]; // Ergebnis: "57.0.2987.133" | echo $result[2]; // Ergebnis: "57.0.2987.133" | ||
| Zeile 20: | Zeile 20: | ||
| ==== Erläuterung des regulären Ausdrucks ==== | ==== Erläuterung des regulären Ausdrucks ==== | ||
| - | **/(Chrome\/)([0-9.]{1,})/** | + | ///Chrome\/(?P<Version>[0-9.]{1,})/// |
| ^Ausdruck^Bedeutung^ | ^Ausdruck^Bedeutung^ | ||
| |/|Muster-Begrenzungszeichen am Anfang| | |/|Muster-Begrenzungszeichen am Anfang| | ||
| - | |(|Beginn der ersten Gruppierung| | ||
| |Chrome|Das Wort "Chrome"| | |Chrome|Das Wort "Chrome"| | ||
| |\/|das escapte "Slash"-Zeichen hinter dem Wort "Chrome"| | |\/|das escapte "Slash"-Zeichen hinter dem Wort "Chrome"| | ||
| - | |)|Ende der ersten Gruppierung| | + | |(|Beginn des Teilsuchmusters| |
| - | |(|Beginn der zweiten Gruppierung| | + | |?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,}|die vorangestellten Zeichen müssen mindestens einmal und dürfen beliebig oft vorkommen| | |{1,}|die vorangestellten Zeichen müssen mindestens einmal und dürfen beliebig oft vorkommen| | ||
| - | |)|Ende der zweiten Gruppierung| | + | |)|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: | //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 Ergebnis: "Chrome/57.0.2987.133" | + | * $result[0] = gesamtes Suchmuster: "Chrome/57.0.2987.133" |
| - | * $result[1] = 1. Gruppierung: "Chrome/" | + | * $result[version] = abgegrenztes, benanntes Teilsuchmuster: "57.0.2987.133" |
| - | * $result[2] = 2. Gruppierung: "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[2] finden. | + | 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. | Wenn die Suche nach der ersten Übereinstimmung fortgesetzt werden soll, ist die Funktion "preg_match_all" (siehe Beispiel 2) zu verwenden. | ||
| Zeile 111: | Zeile 110: | ||
| ==== Erläuterung des regulären Ausdrucks ==== | ==== Erläuterung des regulären Ausdrucks ==== | ||
| - | **/\s\d{1,},?\d{0,2}\s(Euro|€)/** | + | ///\s\d{1,},?\d{0,2}\s(Euro|€)/// |
| ^Ausdruck^Bedeutung^ | ^Ausdruck^Bedeutung^ | ||
| Zeile 125: | 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 131: | 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]] | ||