Benutzer-Werkzeuge

Webseiten-Werkzeuge


php:preg

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
php:preg [2016/05/10 07:43]
webproducer angelegt
php:preg [2020/10/05 10:18] (aktuell)
webproducer Beispiel 3 ergänzt
Zeile 1: Zeile 1:
-====== Reguläre Ausdrücke ​(preg_match) ​======+====== Reguläre Ausdrücke ======
  
-===== Aufgabe =====+===== Beispiel 1: preg_match ===== 
 + 
 +==== Aufgabe ==== 
 + 
 +Aus dem Ergebnis des Aufrufs der JavaScript-Funktion "​navigator.appVersion"​ im Browser Google Chrome soll die Versionsnummer herausfiltert werden. 
 + 
 +==== PHP-Code ==== 
 + 
 +<code php> 
 +$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\/​(?​P<​Version>​[0-9.]{1,​})/',​ $appVersion,​ $result ) ) 
 +
 +    echo $result[2]; // Ergebnis: "​57.0.2987.133"​ 
 +
 +</​code>​ 
 + 
 +==== Erläuterung des regulären Ausdrucks ==== 
 + 
 +///​Chrome\/​(?​P<​Version>​[0-9.]{1,​})///​ 
 + 
 +^Ausdruck^Bedeutung^ 
 +|/​|Muster-Begrenzungszeichen am Anfang| 
 +|Chrome|Das 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| 
 +|{1,}|die vorangestellten Zeichen müssen mindestens einmal und dürfen beliebig oft vorkommen| 
 +|)|Ende des Teilsuchmusters| 
 +|/​|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: preg_match_all ===== 
 + 
 +==== Aufgabe ​====
  
 Wir wollen aus dem unten stehenden Beispieltext alle Euro-Beträge,​ die durch das nachstehende Wort "​Euro"​ oder mit dem Eurozeichen "​€"​ gekennzeichnet sind, herausfiltern. Wir wollen aus dem unten stehenden Beispieltext alle Euro-Beträge,​ die durch das nachstehende Wort "​Euro"​ oder mit dem Eurozeichen "​€"​ gekennzeichnet sind, herausfiltern.
  
-===== Beispieltext,​ der gefiltert werden soll =====+==== Beispieltext,​ der gefiltert werden soll ====
  
 <code txt Beispieltext.txt>​ <code txt Beispieltext.txt>​
Zeile 22: Zeile 68:
 </​code>​ </​code>​
  
-===== PHP-Klasse ​=====+==== PHP-Klasse ====
  
 <code php> <code php>
Zeile 51: Zeile 97:
 </​code>​ </​code>​
  
-===== Aufruf der Methoden der PHP-Klasse =====+==== Aufruf der Methoden der PHP-Klasse =====
  
 <code php> <code php>
Zeile 62: 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^
 |/​|Muster-Begrenzungszeichen am Anfang| |/​|Muster-Begrenzungszeichen am Anfang|
-|/s|Leerzeichen| +|\s|Leerzeichen| 
-|/d|beliebige Ziffer zwischen 0-9|+|\d|beliebige Ziffer zwischen 0-9|
 |{1,}|die vorangestellte Zahl muss mindestens einmal und darf beliebig oft vorkommen| |{1,}|die vorangestellte Zahl muss mindestens einmal und darf beliebig oft vorkommen|
 |,|Komma (Trennzeichen zwischen Euro und Cent)| |,|Komma (Trennzeichen zwischen Euro und Cent)|
 |?|Das vorangestellte Komma ist optional (darf, aber muss nicht vorkommen)| |?|Das vorangestellte Komma ist optional (darf, aber muss nicht vorkommen)|
-|/d|beliebige Ziffer zwischen 0-9|+|\d|beliebige Ziffer zwischen 0-9|
 |{0,2}|die vorangestellte Ziffer muss gar nicht und darf max. zweimal vorkommen| |{0,2}|die vorangestellte Ziffer muss gar nicht und darf max. zweimal vorkommen|
-|/s|Leerzeichen|+|\s|Leerzeichen|
 |(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>​
 +
 +----
 +
 +===== Weiterführende Links =====
 +
 +  * [[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]]
php/preg.1462858998.txt.gz · Zuletzt geändert: 2016/05/10 00:00 (Externe Bearbeitung)