Aus dem Ergebnis des Aufrufs der JavaScript-Funktion „navigator.appVersion“ im Browser Google Chrome soll die Versionsnummer herausfiltert werden.
$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" }
/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:
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.
Wir wollen aus dem unten stehenden Beispieltext alle Euro-Beträge, die durch das nachstehende Wort „Euro“ oder mit dem Eurozeichen „€“ gekennzeichnet sind, herausfiltern.
Die Bearbeitungsgebühr vom Lotto 6aus49 ist abhängig von der zuständigen Landeslotteriegesellschaft sowie von der Anzahl der teilnehmenden Wochen und bewegt sich zwischen 0,20 Euro und 1,50 Euro pro Spielschein. Im Bundesland Saarland ist die Teilnahme mit einer Bearbeitungsgebühr bis zu 1,50 Euro am teuersten. Somit kann ein komplett ausgefüllter Spielschein mit 5 Wochen Laufzeit für mittwochs und samstags inkl. Spiel 77, Super 6 und Glücksspirale maximal 184 Euro kosten. Für die Teilnahme an der Glücksspirale werden von einigen Landeslotteriegesellschaften noch eine zusätzliche Bearbeitungsgebühr zwischen 0,20 € bis 0,60 € berechnet.
class TextFilter { private $content; public function loadFile( $filename ) { if( !file_exists( $filename ) ) return false; $this->content = file_get_contents( $filename ); return true; } public function getArray( $pattern ) { if( empty ( $pattern )) return false; preg_match_all( $pattern, $this->content, $result ); if( count( $result ) > 0 ) return $result[0]; } }
$filter = new TextFilter(); if( $filter->loadFile( "Beispieltext.txt" ) ) $result = $filter->getArray( '/\s\d{1,},?\d{0,2}\s(Euro|€)/' ); print_r( $result );
/\s\d{1,},?\d{0,2}\s(Euro|€)/
Ausdruck | Bedeutung |
---|---|
/ | Muster-Begrenzungszeichen am Anfang |
\s | Leerzeichen |
\d | beliebige Ziffer zwischen 0-9 |
{1,} | die vorangestellte Zahl muss mindestens einmal und darf beliebig oft vorkommen |
, | Komma (Trennzeichen zwischen Euro und Cent) |
? | Das vorangestellte Komma ist optional (darf, aber muss nicht vorkommen) |
\d | beliebige Ziffer zwischen 0-9 |
{0,2} | die vorangestellte Ziffer muss gar nicht und darf max. zweimal vorkommen |
\s | Leerzeichen |
(Euro €) | Es muss das Wort „Euro“ oder das „€“-Zeichen vorkommen |
/ | Muster-Begrenzungszeichen am Ende |
if( preg_match( '/src=[\"\']([^\"\']+)/', $imgTag, $result ) ) { $src = $result[1]; }