Hirdetés
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- bambano: Bambanő háza tája
- MasterDeeJay: Harc a DDR5 árak ellen
- HUNNIA1920: Kínaiwebáruház, amit jobb elkerülni
- sh4d0w: Árnyékos sarok
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- eBay-es kütyük kis pénzért
- urandom0: Száműztem az AI-t az életemből
Új hozzászólás Aktív témák
-
fordfairlane
veterán
válasz
#68216320
#15016
üzenetére
Ahhoz, hogy a bejövő szöveg megfeleljen minden szükséges kritériumnak, ahhoz a html-et DOM objektumfává kell alakítani, és az objektumfán végigmenve szemantikus szűrést kell végezni tagokra, attribútumokra és stílusleírásra.
Ezzel el lehet szőrözni jó sokat, már csak azért is, mert a HTML és a CSS egymástól erősen eltérő ún. "domain specific language", saját szintaktikával, escape szekvenciával, mifenével. Szóval az első próba a Tiny MCE FAQ-ban is ajánlott Html purifier könyvtár feltérképezése legyen szerintem, esetleg valami más, hasonló komponenssel való próbálkozás.
-
Sk8erPeter
nagyúr
válasz
#68216320
#15016
üzenetére
Szerintem valami meglévő library-t kellene felhasználnod a HTML-elemek szűrésére (lásd a korábbi linket, de lehet, hogy van jobb, mint a HTML Purifier), ez azért közel sem triviális feladat, és néhány regexp nem biztos, hogy elegendő rá. Bár azokkal is megoldható részben.
Az, hogy csak class-ok vannak megengedve, azért jelentősen egyszerűsíti a dolgot (mivel csak a class-attribútumot kell engedned), ezen pedig kliensoldalon úgy lehet segíteni, hogy jól jelenjenek meg ezzel a tartalmak, hogy a TinyMCE-ben különböző stílusokat definiálsz előre. Lásd a "Custom formats"-demót; ha a Formats-ba belenézel, ott például láthatod az Example 1, Example 2 stílusokat - ezek egyszerűen sima span-tagek, és class van hozzáadva:tinymce.init({
mode: "textareas",
plugins: "table",
content_css: "css/content.css",
style_formats: [
{title: 'Bold text', inline: 'b'},
{title: 'Red text', inline: 'span', styles: {color: '#ff0000'}},
{title: 'Red header', block: 'h1', styles: {color: '#ff0000'}},
{title: 'Example 1', inline: 'span', classes: 'example1'},
{title: 'Example 2', inline: 'span', classes: 'example2'},
{title: 'Table styles'},
{title: 'Table row 1', selector: 'tr', classes: 'tablerow1'}
],
formats: {
alignleft: {selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'left'},
aligncenter: {selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'center'},
alignright: {selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'right'},
alignfull: {selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'full'},
bold: {inline: 'span', 'classes': 'bold'},
italic: {inline: 'span', 'classes': 'italic'},
underline: {inline: 'span', 'classes': 'underline', exact: true},
strikethrough: {inline: 'del'},
customformat: {inline: 'span', styles: {color: '#00ff00', fontSize: '20px'}, attributes: {title: 'My custom format'}}
}
});Itt ez a két sor az érdekes persze:
{title: 'Example 1', inline: 'span', classes: 'example1'},
{title: 'Example 2', inline: 'span', classes: 'example2'},Ez jó példa arra, hogy simán megoldható, amit szeretnél, mármint kliensoldalon.
Ettől még szerveroldalon persze kell szűrni ugyanúgy.A TinyMCE-nek is egyébként van már inline szerkesztési funkciója, az egyszerűsíti a dolgot (az oldalra vonatkozó stíluselemek vonatkoznak akkor a szerkeszthető részre is).
De ha a szokásos, iframe-es megoldást választod (mint a fenti), akkor pedig egyszerűen meg kell mondani a TinyMCE-nek, hogy melyik CSS-fájlt használja fel a stílusok érvényesítésére, ezt a content_css opcióval tudod meghatározni (ezt is láthatod fentebb). Ebbe belerakhatod a class-okat, meghatározhatod, hogyan nézzen ki a textarea. Érdemes úgy kialakítani a textarea kinézetét, ahogy várhatóan ki fog nézni a végleges eredmény."Aztán az <img> tovább nehezíti a dolgot, hogy csak a tárhelyen lévő képet fogadja el."
Erre is biztos van már valami nagyon egyszerű függvény, vagy hasonló, vagy csak simán egy regexp is elég lehet (ilyet nem olyan nehéz egyébként írni); esetleg ezt még ki lehet egészíteni file_exists() ellenőrzéssel, ha szükséges (hogy egyáltalán létezik-e az a fájl a szerveren).
Új hozzászólás Aktív témák
- Örömhír: nem spórol Európán a OnePlus
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- Elektromos cigaretta 🔞
- Gigabyte alaplap topik
- Íme az új Android Auto!
- Anglia - élmények, tapasztalatok
- Sorozatok
- Mesébe illő csodakábelt tervezett a GeForce-ok leégése ellen a Segotep?
- További aktív témák...
- Nálam már kapható a jelenlegi leggyorsabb brutál notebook: Samsung Galaxy Book 5 Edge 5G!
- Sony WF-G700 White- INZONE Buds vezeték nélküli zajszűrős(ANC) fülhallgató - Fekete, 2 év gari
- High-End AMD Ryzen 9 9950X3D, ASRock X870E Taichi + Dell AlienWare AW2725DF + ajándékok
- 24,5"-os FullHD Dell Alienware gamer monitor újszerű állapotban AW2518HF
- GAMER LAPTOP - ASUS Rog Zephyrus M16 / Intel i7 12700 / RTX 3060 6gb / 24gb DDR5 / 2TB ssd
- GYÖNYÖRŰ iPhone XR 64GB Black -1 ÉV GARANCIA - Kártyafüggetlen, MS3995, 100% Akksi
- BESZÁMÍTÁS! Logitech G920 Driving Force Racing kormányszett
- Creative Sound BlasterX G6 7.1 USB külső hangkártya
- LG 27MR400 - 27" IPS LED - 1920x1080 FHD - 100hz 5ms - AMD FreeSync - Villódzásmentes
- Samsung Galaxy S23 Ultra 256GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: ATW Internet Kft.
Város: Budapest

