Kezdőoldal » Számítástechnika » Programozás » Rekurzív reguláris kifejezés...

Rekurzív reguláris kifejezés PHP-ban. Hogyan?

Figyelt kérdés

BBCode-okat szeretnék feldolgozni vele. Ez menne is, de nem tudom, hogyan tehetném rekurzívvá a feldolgozást. Pl. ha egy [quote][/quote] -ben van beágyazva még egy ilyen:

[quote]blabla[quote]beágyazás[/quote]szöveg[/quote]

Olvastam az (?R) használatáról, de nem tudom működésre bírni. Itt van a a mintám:

/\[([^ \]"]+)((?: [^ ]+="[^"]*")*)\]([^\[]*|(?R))\[\/\1\]/


Ez a rész érdekes benne:

([^\[]*|(?R))

Ez illeszkedik a [quote] és a [/quote] KÖZÖTT lévő szövegre. A minta szerint ez a szöveg állhat bármennyi karakterből, de nem lehet benne [ karakter; VAGY a rekurzív vizsgálat. De az eredmény ugyanaz ezzel mintha nem tenném bele az (?R)-t, magyarán csak a legbelső beágyazást találja meg, a külsőket nem. Mit kéne tennem?


2011. márc. 20. 13:17
 1/2 anonim ***** válasza:
Próbáld ki, hogy a (?R)-et a legelejére teszed, az ilyenek mindig ott szoktak lenni.
2011. márc. 29. 13:43
Hasznos számodra ez a válasz?
 2/2 anonim ***** válasza:
Jobban végigolvastam, ilyet nem lehet csinálni. A ?R egy kapcsoló, amely az utána következő kifejezés kiértékelését módosítja, nem pedig kifejezés, ennélfogva nem lehet alternatív kifejezésként használni. Keress rá a Kodos nevű programra, amivel tesztelheted a kifejezéseid jóságát.
2011. márc. 29. 13:48
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!