[Regex]Rückreferenz außerhalb der Matching-Funktion nutzen
Stefan Welscher
- php
Hi,
ich muss grad nach mehreren Monaten mit Perl zumindest kurz wieder zurück zu PHP schwenken, komm aber mit Regex nicht mehr klar.
Wenn ich in Perl auf ein erkanntes Suchmuster außerhalb der zugehörigen Funktion zugreifen wollte ging das ja recht einfach:
if ($var=~/^Hallo (Welt|Erde)/)
{ print "Es wurde die $1 begrüßt!\n"; }
Nun will das aber bei PHP nicht so laufen und ich hab kein Handbuch in Reichweite. Hab auch schon ne gute Stunde gegoogled, aber nix gefunden. Also folgendes geht nicht:
if (preg_match("/^Hallo (Welt|Erde)/",$var,$trash))
{ echo "Es wurde die $1 begrüßt!\n"; }
Dass in PHP keine Variable mit ner Zahl beginnen darf hab ich inzwischen kapiert, aber wie mache ich es richtig?
Danke!!
echo $begrüßung;
[...] ich hab kein Handbuch in Reichweite. Hab auch schon ne gute Stunde gegoogled, [...]
Wie passt denn das zusammen? Das PHP-Handbuch sollte sich auch über Google finden lassen, doch einfacher ist es, dem Documentation-Link auf die PHP-Homepage (http://php.net/) zu folgen.
if (preg_match("/^Hallo (Welt|Erde)/",$var,$trash))
{ echo "Es wurde die $1 begrüßt!\n"; }
Dass in PHP keine Variable mit ner Zahl beginnen darf hab ich inzwischen kapiert, aber wie mache ich es richtig?
Am besten so, wie es auf der Seite zu preg_match() beschrieben ist.
echo "$verabschiedung $name";
Hallo dedlfix,
if (preg_match("/^Hallo (Welt|Erde)/",$var,$trash))
{ echo "Es wurde die $1 begrüßt!\n"; }
Dass in PHP keine Variable mit ner Zahl beginnen darf hab ich inzwischen kapiert, aber wie mache ich es richtig?
$1, $2, $3, usw. gibt es nur in Perl. Bei PHP gibts bei preg_match einen zusätzlichen Parameter, wo du ein Array angeben kannst, wo jene Matchings reingeschoben werden. $1 gibts dann also über $trash[1].
Am besten so, wie es auf der Seite zu preg_match() beschrieben ist.
und dort steht es auch beschrieben (das PHP-Handbuch gibts übrigens auch auf deutsch).
Viele Grüße,
Sven