Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

php preg_match non greedy

Diskussion: php preg_match non greedy im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige heyho ich bastel grad nen einfaches template system für meine zwecke. dabei brauch ich sachen die wiederhotl darstellt werden ...

Antwort
Alt 14.04.10, 13:31   #1 (permalink)
Member of Honour
 
Benutzerbild von easteregg
 
Registriert seit: 14.09.07
easteregg Leistung: Pentium Ieasteregg Leistung: Pentium I
easteregg eine Nachricht über ICQ schicken
Likes: 62
erledigt php preg_match non greedy

Anzeige

heyho

ich bastel grad nen einfaches template system für meine zwecke.
dabei brauch ich sachen die wiederhotl darstellt werden können.
beispiel ein menu:

PHP-Code:
                <div id="menu">
                    <
ul>
                        {
repeater='menu'}
                        <
li>
                            <
a href="{href}">{name}</a>
                        </
li>
                        {
repeater}
                    </
ul>
                </
div
solange nur ein "repeater" von mir definiert ist klappt das super.
sobald ich aber noch das submenu einfüge

PHP-Code:
                <div id="menu">
                    <
ul>
                        {
repeater='menu'}
                        <
li>
                            <
a href="{href}">{name}</a>
                        </
li>
                        {
repeater}
                    </
ul>
                </
div>
                <
div id="submenu">
                    <
ul>
                        {
repeater='submenu'}<li><a href="{href}">{name}</a></li>{repeater}
                    </
ul
wird alles erfasst von preg_match, was zwischen den äußersten repeater paaren ist.

der preg match sieht dabei recht simpel aus:

PHP-Code:
preg_match("~\{repeater='$name'\}(.*)?\{repeater\}~s",$this->html,$snipped); 
nur kann ich nicht verhindern, dass der zu viel aufnimmt, normal sollte doch das "?" verhindern, dass der match zu gierig ist. wieso klappt das nicht?
__________________
» Flattr mich! - Wenn dir mein Beitrag geholfen hat! «
<| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |>

Geändert von easteregg (14.04.10 um 14:31 Uhr)
easteregg ist offline   Mit Zitat antworten
Alt 14.04.10, 14:25   #2 (permalink)
 
Benutzerbild von metax.
 
Registriert seit: 22.01.07
metax. Leistung: 8086
metax. eine Nachricht über ICQ schicken
Likes: 10
Standard

Hallo, probier doch mal, das Fragezeichen in die Klammer reinzuziehen, also: (.*?)
Als "Lazy"-Operator muss es direkt hinter dem Quantifizierer "*" stehen. Wenn du es außerhalb der Klammern schreibst, wirkt es als "Optional"-Operator für die ganze Gruppe.
Siehe auch:
http://www.regular-expressions.info/optional.html
http://www.regular-expressions.info/repeat.html

mfg, metax.
__________________
Wenn keiner zuschaut, teile ich heimlich durch Null!
Meine Homepage: Planet Metax | meine Bilder: DeviantArt | Twitter
metax. ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 14.04.10, 14:31   #3 (permalink)
Member of Honour
Themenstarter
 
Benutzerbild von easteregg
 
Registriert seit: 14.09.07
easteregg Leistung: Pentium Ieasteregg Leistung: Pentium I
easteregg eine Nachricht über ICQ schicken
Likes: 62
Standard

ah okay, danke für deine hilfe.
ich dachte das ist okay, ich dachte ich mach damit den ausdruck in der klammer ungreedy, und nicht optional!

wieder was gelernt, ich hatte das problem im übrigen mit dem modifier "U" umgehen können, der alle ausdrücke ungreedy macht
__________________
» Flattr mich! - Wenn dir mein Beitrag geholfen hat! «
<| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |>
easteregg ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » php preg_match non greedy
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61