klausschreiber
Well-known member
- 6 Mai 2006
- 247
- 8
Hallo,
da ein regulärer Ausdruck bei mir lokal ging, online jedoch nicht, bin ich auf etwas verwunderliches gestoßen.
Wenn ich mir die Treffer von preg_match als assoziatives Array ausgeben lassen wollte, habe ich normalerweise immer "?<name>" benutzt.
Mal ein Beispiel:
funktioniert bei mir lokal (xampp), online jedoch kommt die Fehlermeldung
Ich habe nun hier die Syntax "?P<name>" gefunden.
Beispiel:
funktioniert auch auf meinem online Server.
Aber was ist der Unterschied zwischen "?<name>" und "?P<name>"? In xampp funktioniert ja Beides und die erste Version muss ich ja auch irgendwo mal gelesen haben (kann sie mir ja nicht aus den Fingern gesaugt haben
) und lokal funktioniert die Variante ja auch, nur auf meinem online Server nicht.
Gruß,
Klaus
da ein regulärer Ausdruck bei mir lokal ging, online jedoch nicht, bin ich auf etwas verwunderliches gestoßen.
Wenn ich mir die Treffer von preg_match als assoziatives Array ausgeben lassen wollte, habe ich normalerweise immer "?<name>" benutzt.
Mal ein Beispiel:
PHP:
$test = "Hallo, ich heisse Klaus und bin 23 Jahre alt.";
$regex = "/^[^,]*, (?<bezug>[^ ]*).*(?<alter>[0-9]{2}) .*\.$/";
if (preg_match($regex, $test, $result)) {
print_r($result);
}
Code:
Warning: preg_match() [function.preg-match]: Compilation failed: unrecognized character after (?< at offset 11 in /home/www/web137/html/test/regex.php on line 4
Ich habe nun hier die Syntax "?P<name>" gefunden.
Beispiel:
PHP:
$test = "Hallo, ich heisse Klaus und bin 23 Jahre alt.";
$regex = "/^[^,]*, (?P<bezug>[^ ]*).*(?P<alter>[0-9]{2}) .*\.$/";
if (preg_match($regex, $test, $result)) {
print_r($result);
}
Aber was ist der Unterschied zwischen "?<name>" und "?P<name>"? In xampp funktioniert ja Beides und die erste Version muss ich ja auch irgendwo mal gelesen haben (kann sie mir ja nicht aus den Fingern gesaugt haben
Gruß,
Klaus