Benutzer-Werkzeuge

Webseiten-Werkzeuge


php:preg

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

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]]
php/preg.1492530906.txt.gz · Zuletzt geändert: 2017/04/18 00:00 (Externe Bearbeitung)