URL: https://www.overclockers.at/coding-stuff/problem_mit_folgender_regexp_135668/page_1 - zur Vollversion wechseln!
ich bastel grade an einem tool, das mir spieler in einem onlinegame-ranking vergleicht.
ich poste mal ein beispiel, wie das ausschaut:
so, jetzt hab ich soweit programmiert, dass er in ein array schreibt, welcher platz der spieler ist, wieviel ruhm uswusf.Zitat1196 Hell Fire death 2586 0 7
1269 Realitycop agga 2469 -15522 5
Code: PHPif(preg_match("/^[0-9]{1,5} ([a-z]+ ){3} .+$/i", $linevalue)) echo "Der Name besteht aus 2 Teilen"; # linevalue = 1196 Hell Fire death 2586 0 7
nene, also da hast nen hund drinnen, das geht so net...
Du musst das matchen, was du als fix ansehen kannst - und das dazwischen kann dann eh nurmehr der name sein:
"/^([0-9]+) (.*?) ([0-9]+) (-?[0-9]+) ([0-9]+)/"
damit hast du die infos die du willst dann sogar schön verpackt im array
alternativ dazu könntest du auch einfach so wie jetzt per explode den string zerteilen. das erste element wegnehmen und die letzten 3 - das was überbleibt ist dein Name, den kannst du dann wieder imploden, fertig. Ich finde das aber nicht so "sauber"
Zitat von watchoutnene, also da hast nen hund drinnen, das geht so net...
Du musst das matchen, was du als fix ansehen kannst - und das dazwischen kann dann eh nurmehr der name sein:
"/^([0-9]+) (.*?) ([0-9]+) (-?[0-9]+) ([0-9]+)/"
damit hast du die infos die du willst dann sogar schön verpackt im array
alternativ dazu könntest du auch einfach so wie jetzt per explode den string zerteilen. das erste element wegnehmen und die letzten 3 - das was überbleibt ist dein Name, den kannst du dann wieder imploden, fertig. Ich finde das aber nicht so "sauber"
scheinbar verstehst du nicht, wie reguläre ausdrücke funktionieren:
ein regulärer ausdruck fragt nicht ab, sondern er "matched", dh. es wird überprüft, ob die vorlage (der pattern) passt.
deshalb wäre es auch komplett sinnlos eine regexp in einem derart kurzen string nur dazu zu verwenden, zu überprüfen ob der name 2-teilig ist.
Die Regexp von mir sollte im "matches" array alle deine werte zurückliefern die du brauchst, egal ob der name ein, zwei, oder 4000 leerzeichen enthält.
deswegen brauchst du damit auch keinen explode, oder sonstwas mehr - das macht die preg_-funktion schon.
aha, ich hab deine idee langsam verstanden. nur die durchführung nicht: welches preg? preg_replace? wie müssten dann die parameter ausschauen, damit die einzelnen teile in ein array aufgeteilt werden?
ja, ich weiß, "kann regexp erst seit gestern" ist keine ausrede, aber wäre super, wenn du mir deine idee fertig präsentieren könntest :up: (wenn du zeit hast)
tia, mfg
http://at.php.net/manual/de/function.ereg.php
oh, ja - alternativ kannst auch gleich eine endlosschleife einbauen, um die performance zu verbraten...Zitat von kleinerChemikerhttp://at.php.net/manual/de/function.ereg.php
Zitat von kleinerChemikerhttp://at.php.net/manual/de/function.ereg.php
ZitatEdit: Selber lesen bringt dich aber auch weiter...
http://cz.php.net/manual/en/function.preg-match.php
Zitat von tomstigwieso kann ich leute wie dich nicht leiden?
vielleicht weil du zu faul zum lesen bist? die regexp steht weiter oben, und da steht eine funktion, in die du die regexp einsetzen kannst.
"kann regexp erst seit gestern" -> sagt das nicht eh alles? und glaubst du ich kenn die befehle nicht? es ging mir rein um den regexp![]()
warum fragst du dann welches preg?
http://at2.php.net/manual/de/function.ereg-replace.php
ist zwar gut versteckt, ist aber IMHO für alle ereg<>preg gültig...
meinstu du damit den tip?
(Tipp: Die Funktion preg_replace(), die eine zu Perl kompatible Syntax regulärer Ausdrücke verwendet, ist häufig die schnellere Alternative zu ereg_replace().)
Ehrlich gesagt, den hab ich bei anderen auch gelesen, aber verstehe nicht so ganz, was er mir sagen will, außer daß preg schneller ist.
du hast eh schöne word boundaries, warum verwendest du nicht split für sowas?
oder gleich explode wie watch oben empfohlen hat
erspart man sich den ganzen regex umweg
eben. Es ist nämlich schlicht und ergreifend sowohl in Sachen Performance, als auch bei den Features schlechter.Zitat von kleinerChemiker@watchout: was kann eigentlich ereg mehr als preg_match? oder warum ist es resourcenlastiger? im manual finde ich nix, das ereg "besser" macht.
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025