Érvénytelen bbcode kezelés és quote egymásba ágyazás
Lenne két kérdésem a BBCode használatával kapcsolatban:
1. Ti hogyan kezelitek azt le, hogyha például a felhasználó előbb zárja le a [ b]-tagot mint ahogy kéne. Pl: [ b]félkövér betűs [ i]és dőlt betűs szöveg[ /b][ /i] Biztos lesz olyan felhasználó aki el fogja rontani, és így e miatt nem lesz valid az oldal.
2. Ha egymásnak válaszolnak a felhasználók, akkor a választ egy [ quote] tagba teszem a választ. Viszont ha egy olyan üzenetre válaszolnak amiben már van egy ilyen válasz, és így egymásbaágyazódnak a [ quote] tagok, akkor már nem működik helyesen. Pl: [ quote][ quote]válasz-1[ /quote]válasz-2[ /quote]
Így a szkript az első nyitó és első záró tagot veszi válasz-idézetnek, és nem fogja őket egymásbaágyazni.
Ezeket hogyan lehetne megoldani?
■ 1. Ti hogyan kezelitek azt le, hogyha például a felhasználó előbb zárja le a [ b]-tagot mint ahogy kéne. Pl: [ b]félkövér betűs [ i]és dőlt betűs szöveg[ /b][ /i] Biztos lesz olyan felhasználó aki el fogja rontani, és így e miatt nem lesz valid az oldal.
2. Ha egymásnak válaszolnak a felhasználók, akkor a választ egy [ quote] tagba teszem a választ. Viszont ha egy olyan üzenetre válaszolnak amiben már van egy ilyen válasz, és így egymásbaágyazódnak a [ quote] tagok, akkor már nem működik helyesen. Pl: [ quote][ quote]válasz-1[ /quote]válasz-2[ /quote]
Így a szkript az első nyitó és első záró tagot veszi válasz-idézetnek, és nem fogja őket egymásbaágyazni.
Ezeket hogyan lehetne megoldani?
Idézés
Téves
valid
quote: hát az attól függ, hogy-hogy oldod meg a quotet... mert ugye sok féle képp lehet
validság: egyszerűen ráeresztesz egy olyan fv.-t, ami ellenőrzi, hogy minden nyitótag után az a zárótag jön e. pl.: csinálsz egy tömböt. első elemnek felveszed az első tagot, pl. félkövér, aztán az utána levő megnyitó tagot, pl. dőlt. ha meg bezárni kell, egyszerűen megnézed, hogy a tömb uccsó elemének típusa megegyezik e a bezáró taggel. persze ezzel még nem kezelted le. ez egy egyszerűbb mód, de még számtalan másik megoldás is van. have a nice day.
függvényem
én ezt az egyszerű függvényt használom bbcode kezelésére. a lényege h kííratáskor futtatom keresztül rajta a kommenteket.
bepostolom, hátha valakinek hasznára válik, meg így legalább rá tudtok mutatni az én hibáimra is :)
a tagek helyes egymásbaágyazási sorrendje itt is a júzertől függ, de azt hiszem az idézeteket kezeli
a listákkal van egy kis gond (elemek, számozás validság), tudtok erre valami ötletet adni?
ti mit csinálnátok másképpen?
Ezz...
sajnos nincs... de megnéztem
de szerintem most meg fogom nézni :)
szerk: megnéztem, a weboldalam főoldalának legenerálása (10 darab ilyen módon formázott bejegyzéssel, amik nem is túl hosszúak)
0.0825 másdopercről 0.0907 másodpercre nőtt (~0.0082 mp)
mivel nem igazán tudom hova tenni a számokat, jól sejtem h ez számít?
valószínűleg a preg_replace hosszabb stringeknél jóval lassabb is lehet.
hogyan oldják ezt meg a nagyok?
első ötletnek az "adatbázisba mentéskor" ugrik be...
szerk2:
további tesztelés azt mutatja, h a generálási idő föggvény nélkül is 0.082 és 0.097 között mozog (leggyakrabban 0.086), föggvénnyel pedig 0.087 és 0.101 között (leggyakrabban 0.094)
regexp hiba
Viszont akkor mit használjak e helyett?
Ötlet...
Károly