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]] |