Text zwischen Anführungszeichen auslesen
Reguläre Ausdrücke | letzte Änderung am 21. Juli '10 um 21:54 Uhr
Problemstellung
Aus einer beliebigen Zeichenkette sollen alle Strings herausgefiltet werden, die zwischen einfachen oder doppelten Anführungszeichen stehen.
Die Lösung
Bei unserem regulären Ausdruck spielen Rückbezüge (engl. back references) eine wichtige Rolle. Zunächst einmal selektieren wir ein Anführungszeichen (ob Single- oder Doublequote ist dabei egal) und wissen, dass alle Zeichen, die zwischen den Anführungszeichen stehen können, von unserem selektierten Zeichen verschieden sein müssen, denn das Anführungszeichen würde unser Muster beenden.
<?php
$string = <<<EOT
"The Quick 15 Brown Fox" Jumped Over The 'Lazy Dogs.
The Quick Brown' Fox Jumped "Over" The Lazy 30 Dogs.
EOT;
preg_match_all('/([\'\"])([^\1]*?)\1/', $string, $matches);
echo '<pre>', print_r($matches), '</pre>';
Als Ergebnis erhalten wir:
Array
(
[0] => Array
(
[0] => "The Quick 15 Brown Fox"
[1] => 'Lazy Dogs.
The Quick Brown'
[2] => "Over"
)
[1] => Array
(
[0] => "
[1] => '
[2] => "
)
[2] => Array
(
[0] => The Quick 15 Brown Fox
[1] => Lazy Dogs.
The Quick Brown
[2] => Over
)
)