Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Regulärer Ausdruck ... ich checks net ...

hmm, kA ob das Forum passt aber ich finde, dass es gar net so einfach ist durch den regulären Ausdruck schon irgendwie fortgeschritten ...

mein Problem ist folgendes ... man soll irgendwo auf einer seite {filelist:*} schreiben können ... wobei das * für dateiformate steht ... also z.B. {filelist:exe,zip,rar} ...

jetzt soll das dokument danach durchsucht werden und eine Funktion mit den Dateiformaten ausgeführt werden ...
ich will mir jetzt also erstmal alles in ein Array schreiben und habe folgenden Ansatz:

Code:                   In Zwischenablage kopieren (nur IE)
1">

So, wenn ich diesen Platzhalter nur einmal pro Dokument setze ist auch alles kein Problem ... wenn das allerdings 2x der fall ist ... z.B.

{filelist:zip,rar}
{filelist:exe}

dann wird es nur einmal ausgewertet ... es wird nach er ersten geöffneten geschweiften klammer gesucht und nach der letzten geschlossenen ... ich bekomm also

"zip,rar}
{filelist:exe"

als Wert übergeben ...

wie kann ich es machen, dass es bei beiden funktioniert??

MfG
Donar
Hier gehts zum Orginal Eintrag "Regulärer Ausdruck ... ich checks net ..." im Forum

Antworten

str_replace um die geschweiften Klammern wegzumachen

und einmal explode mit : und einmal mit ,


2.

Zitat:
Bernd456 postete
str_replace um die geschweiften Klammern wegzumachen

und einmal explode mit : und einmal mit ,
um das zu machen muss ich ja erstmal alle platzhalter rausfinden und irgendwo zwischenspeichern ... genau das will ich ja mir preg_match_all bezwecken aber es nimmt halt immer das erste {filelist und das letzte }

MfG
Donar


3.

Ungreedy matchen, dafür gibts den U Modifyer.


4.

Zitat:
um das zu machen muss ich ja erstmal alle platzhalter rausfinden und irgendwo zwischenspeichern
wieso das denn? Du hast einen String und ersetzt bestimmte Zeichen. Wo mußt Du da was zwischenspeichern ?

Doku schon gelesen ?

[doc]str_replace[/doc]

und

[doc]explode[/doc]


Man kann auch beides verwenden:
Code:                   In Zwischenablage kopieren (nur IE)
2">




5.

Zitat:
dann wird es nur einmal ausgewertet ... es wird nach er ersten geöffneten geschweiften klammer gesucht und nach der letzten geschlossenen ... ich bekomm also

"zip,rar}
{filelist:exe"

Regexe sind standardmäßig gefräßig:
http://de.php.net/manual/de/reference.pcre.pattern.modifiers.php

so gehts:
Code:                   In Zwischenablage kopieren (nur IE)
3">

Edit:
Na toll, durch testen 5Minuten zu spät ;)


6.

Zitat:
Oliver Albers postete
Ungreedy matchen, dafür gibts den U Modifyer.
Oh mann ... das ist ja so einfach ... ich glaub ich hatte bald alle Modidyer durch ... nur U noch net ;)

big thx ... klappt prima ...

damit wäre das Thema auch schon erledigt ...

MfG
Donar


Hier gehts zum Orginal Eintrag "Regulärer Ausdruck ... ich checks net ..." im Forum
 
phpforum.de | Impressum