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.
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.
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!
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!