Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
23.07.2009, 23:23
the_Crow



Quellcode:$line = "15:34 You lose 14 hitpoints due to an attack by a nomad.";
preg_match ("@You lose (.+?) hitpoints due to an attack by a (.+?).@s", $line, $m);
echo $m[1];
echo $m[2];
Problem 1:
Für $m[1] wird "14" ausgegeben, was ja richtig ist.
Bei $m[2] kommt aber nur "n", also der erste Buchstabe des Wortes an dieser Stelle.
Warum ist das so? Wie bekomme ich das ganze Wort?

Edit:
Wenn ich nach dem zweiten (.+?) nochmal (.+?) dranhänge, dass bekomme ich bei $m[3] den nächsten Buchstaben -.-

Edit2: Hab das erste Problem gelöst. Mit (?<foo>\d+) für die Zahl und
(?<bar>\w+) für den Namen funktioniert es.

Problem 2:
Beginnt das zweite Wort mit einem Vokal anfängt, dann ist der Artikel "an".
Gibt es da eine passende Anweisung, die der Funktion sagt, sie soll "a" und "an" zulassen?

--

www.the-crow.at - meine persönliche Website | TibiaGerman | Twitter | Wiaschtlsiada


Dieser Beitrag wurde am 23.07.2009 um 23:47 von the_Crow bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
001
24.07.2009, 00:22
Bluthund



@2
How about:
Quellcode:an? @1
Das dein zweites (.+?) nur das n von nomad captured liegt daran, dass du über ? anweist non-greedy zu matchen und der Punkt am Ende deiner RegEx jedes beliebige folgende Zeichen matched und nicht das Satzendzeichen, was du möchtest ist wahrscheinlich Quellcode:\. Dann funktioniert auch theoretisch (.+?). Aber das ist Hunz wenn du weißt, dass dort nur Buchstaben zu stehen haben. Also bleib bei \w.

Quellcode:You lose (\d+) hitpoints due to an attack by an? (\w+)\. Evtl nochmal bisschen nachschlagen ;)

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-

zum Seitenanfang zum Seitenende Profil || Suche
002
24.07.2009, 00:42
the_Crow



Danke so funktioniert es ^^

Zitat:
Bluthund postete
Evtl nochmal bisschen nachschlagen ;)
Die PHP Website gibt zu dem Thema leider nicht viel her.

--

www.the-crow.at - meine persönliche Website | TibiaGerman | Twitter | Wiaschtlsiada

zum Seitenanfang zum Seitenende Profil || Suche
003
24.07.2009, 01:00
Bluthund



Damit meinte ich auch eher, dass du dich mit Regular Expressions im Allgemeinen auseinandersetzen solltest (es lohnt sich definitiv).
Die PHP-Doku sollte man eigentlich für nix anderes zu Rate ziehen als für das Auffinden von PHP-eigenen Funktionen/Klassen. Mehr ist da eh nicht zu extrahieren.

Warum schließt du dein Pattern eigentlich in @'s ein und nicht in /'s? Gibt's da nen speziellen Grund? Persönliche Präferenz oder einfach nur weil es geht?

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-

zum Seitenanfang zum Seitenende Profil || Suche
004
24.07.2009, 01:54
the_Crow



Dafür gibts keinen speziellen Grund. Einfach weils geht ^^

--

www.the-crow.at - meine persönliche Website | TibiaGerman | Twitter | Wiaschtlsiada

zum Seitenanfang zum Seitenende Profil || Suche
005
24.07.2009, 02:14
speziFanta



Zum Testen kann ich http://www.regex-tester.de empfehlen.

--

Heute schon gegoogelt?
spezi|Clan
TheWall.de - wo jeder alles sein kann.


Dieser Beitrag wurde am 24.07.2009 um 02:15 von speziFanta bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
24.07.2009, 14:46
dp
Administrator


Zitat:
the_Crow postete
Danke so funktioniert es ^^

Zitat:
Bluthund postete
Evtl nochmal bisschen nachschlagen ;)
Die PHP Website gibt zu dem Thema leider nicht viel her.
http://www.php.net/manual/en/regexp.introduction.php

--

zum Seitenanfang zum Seitenende Profil || Suche
007
24.07.2009, 14:47
LeJean



http://www.regular-expressions.info/
Dort findet sich alles, was man wissen muss. Und es eignet sich gut, um damit RegExes überhaupt vernünftig zu erlernen.
(Bzw. http://www.regular-expressions.info/tutorialcnt.html)

--

zum Seitenanfang zum Seitenende Profil || Suche