Autor Zpráva
K.
Profil *
Zdravím.
Rád bych ve svém značkovaní odstranil prazdné tagy a nevím jak na to.
Tedy potřebuji převést např. toto:
[a]nejaky text[c][b][/b][/c][/a]
na:
[a]nejaky text[/a]

Zkoušel jsem na to vymyslet reg.výraz, ale byl jsem neúspěšný. Nemohl by mi prosím někdo poradit, jak na to? Dík moc.
nightfish
Profil
$text = str_replace("[b][/b]", "", $text);
a tohle provádět cyklicky do té doby, pokud tam nějaké prázdné tagy budou
K.
Profil *
To mě taky napadlo. Problém je ale v tom, že to mohou být tagy s libovolnými názvy. A s tímto řešením by to bylo IMO celkem na dlouho.
Casero
Profil
K.
no tak místo jmena tagu dáš libovolný znak..a máš to ne?
K.
Profil *
Casero
V tom případě se mi smaže i: [a][/b], protože ty názvy nebudou na sebe vázány.
nightfish
Profil
K.
tak v tom případě nějaký parser, který bude procházet text, pamatovat si 1) otevřené tagy a 2) pozice otevřených tagů
a když narazí na uzavírací tag, tak zkontroluje rozdíl pozic oproti poslednímu otevřenému tagu stejného názvu a když bude dostatečně malý (teoreticky 0, prakticky délka otevíracího tagu), tak ty 2 odpovídající tagy zruší
...a cyklicky to bude opakovat
K.
Profil *
Právě tohoto jsem se bál. Myslel jsem, že existuje nějaký elegantnější způsob. Holt bohužel si s tím budu muset trochu víc pohrát.
Děkuji za rady.
Toto téma je uzamčeno. Odpověď nelze zaslat.