.| Autor | Beitrag |
|---|---|
|
000 29.11.2005, 23:42 thinktank |
Hi, Mein Problem ist eher allgemeiner Natur, aber die Lösung sollte in PHP sein. Wie kann ich Blöcke von while, if - Anweisungen etc. in der richtigen Reihenfolge durchgehen? Ich brauche das für eine Templateklasse, die auch Schleifen beherrschen soll. Blöcke meiner Schleifen habe ich bis jetzt mit der RegExp Beispiel: Suche derzeit in diversen Templateklassen (wie z.B. Smarty) nach der entsprechenden Zeile. Für Hinweise wäre ich dankbar. Danke! thinktank --Dieser Beitrag wurde am 29.11.2005 um 23:42 von thinktank bearbeitet. |
|
Profil || Suche |
|
001 30.11.2005, 15:08 theDon |
Recursive Matching ist dein Freund. Aber mach das nur, wenn die Inhalte aus vertrauenswuerdigen Quellen kommen. Fuer Templates ist das in Ordnung, aber Userdata solltest du da nicht durch jagen, weil das unter Umstaenden massivst imperformant ist. --\o tanz den naziprau! o/ And more than ever, I hope to never fall, |
|
Profil || Suche |
|
002 30.11.2005, 22:30 thinktank |
Ok, Danke für den Tipp. Ich glaube, ich habe auf http://www.perl.com/pub/a/2003/06/06/regexps.html unten bei "How do I extract parenthesized text?'" die Lösung gefunden. Scheint zumindest mit RegEx nicht anders zu gehen, da iterative Lösung nicht funktionieren. Wenn ich den passenden Code für mein Problem habe, werde ich den ggf. hier reinschreiben. -- |
|
Profil || Suche |
|
003 03.12.2005, 21:42 thinktank |
In Perl scheint die Lösung mit rekursiven RegEx einfach:
|
|
Profil || Suche |
|
004 03.12.2005, 21:57 theDon |
http://de2.php.net/manual/en/reference.pcre.pattern.syntax.php -- \o tanz den naziprau! o/ And more than ever, I hope to never fall, |
|
Profil || Suche |
|
005 06.12.2005, 17:36 thinktank |
Der Fairness halber, jetzt meine Lösung. Erst durch ein str_replace eine Klammer vor jedes LOOP und nach jedem ENDLOOP setzen. Das ist vielleicht nicht zwingend notwendig, aber in meinen Augen besser als mit Lookaheads oder Lookbehinds zu arbeiten. Vielleicht isses auch nicht so rechenlastig. Wer kurz dazu ein Statement abgeben könnte ...:)
|
|
Profil || Suche |
|
006 10.12.2005, 20:45 scus |
mal ne kleine frage: was wäre, wenn man statt { und } als "blockumrandung" '<block>' und '</block>' nehmen wollte, weil man { und } anderweitig verwendet? kann man irgendwie ganze strings invertieren? [^<block>] würde schließlich <, b, l, o, c, k, > jeweils einzeln invertieren... --sincères amitiés scus |
|
Profil || Suche |
|
007 10.12.2005, 21:09 HammerBlade |
Wie wärs mit [^<][^b][^l][^o][^c][^k][^>]? Scherz bei seite. Die Kommentare auf php.net sind oft nützlich: http://de2.php.net/manual/en/function.preg-grep.php#55421 --"Mit C++ (noch besser mit C) kann man sich _sehr_ leicht in den Fuss schiessen." - theDon |
|
Profil || Suche |
|
008 10.12.2005, 22:02 scus |
danke, das hat funktioniert... hier mal mein code um die blöcke zu finden. sincères amitiés scus |
|
Profil || Suche |
|
009 10.12.2005, 23:02 theDon |
Lookahead ist dein Freund. `(?!<block>)' -- \o tanz den naziprau! o/ And more than ever, I hope to never fall, |
|
Profil || Suche |
|
010 01.02.2006, 14:40 scus |
Neue Frage zum Thema PCRE sincères amitiés scus |
|
Profil || Suche |
|
011 01.02.2006, 14:58 theDon |
.-_ ist der Bereich von ,.' bis ,_'. Da liegt allerdings der halbe Zeichensatz dazwischen...
\o tanz den naziprau! o/ And more than ever, I hope to never fall, |
|
Profil || Suche |
|
012 01.02.2006, 22:00 thinktank |
Achja, wo ich gerade sehe, dass der Thread noch genutzt wird: KRegExpEditor hat mir viel geholfen. Stellt den Ausdruck sprachlich und graphisch dar. So hätte man z.B. den obigen Fehler schnell gefunden. Vielleicht gibts ja nen Windows-Port. -- |
|
Profil || Suche |
|
013 01.02.2006, 23:36 scus |
Jetzt wo du's sagst ist es logisch! Danke... Werd mal nach diesem Editor gucken. -- sincères amitiés scus |
|
Profil || Suche |

