Data opslaan vanuit WYSIWYG editor
Ik ben bezig met het bouwen van een CMS systeem. Hier wil ik nu dan eindelijk een WYSIWYG editor inmaken. Dat is ook allemaal het probleem niet, het OOP gaat ook steeds beter dus veel vooruitgang.
Ik zit alleen met het punt hoe wil ik mijn data eigenlijk opslaan... Vele browsers geven verschillende HTML in de editor. Zo krijg ik bij firefox in een klap inline CSS binnen alle <p> tags. Terwijl mijn Chrome browser dat lekker laat voor wat het is.
Nu vind ik het geen werelds probleem om de simpele HTML tags puur in me database te gooien, maar om nou al die inline CSS er in te gooien. Nee geen goed plan.
Toen dacht ik, strip_tags perfect! Probleem komt echter pas als een gebruiker zijn tekst in het midden of rechts uit wil lijnen. Dat gaat niet want ik accepteer de <p> tag niet. Vele functies gevonden en bedacht om de html te verwijderen, maar om dat ene attribuut van het style element er in te laten blijkt toch wel een struikelblok.
Heeft iemand hier wellicht een geniale ingeving over? Hoe kan ik dit het beste aanpakken. Ondertussen lees ik mij nog dood over Reguliere Expressies want daar blijf ik voorlopig nog op haperen...
------------------------------------------------
EDIT
Hard werken loont blijkt maar weer, na 2 dagen zoeken en lezen ben ik nu doorgeslagen en heb vanalles in elkaar zitten prutsen.
Uiteindelijk moet dit de oplossing worden:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$string = '<p style="text-align:center; color: #00FF00;">Lorem Ipsum is simply dummy text of the printing and typesetting industry.</p>';
$string = preg_replace('#\<p style="text-align:(.+?);(.+?)"\>(.+?)</p\>#si', '[\\1]\\3[/\\1]', $string);
echo $string;
?>
$string = '<p style="text-align:center; color: #00FF00;">Lorem Ipsum is simply dummy text of the printing and typesetting industry.</p>';
$string = preg_replace('#\<p style="text-align:(.+?);(.+?)"\>(.+?)</p\>#si', '[\\1]\\3[/\\1]', $string);
echo $string;
?>
------------------------------------------------
EDIT
Ik zit nu alleen nog met het feit dat doordat ik nu het style atribuut toesta, dit dus ook voor kan komen in een <b> tag of iets dergelijks...
Gewijzigd op 16/09/2013 16:11:51 door Milo S
Nu is eigenlijk heel simpel mijn vraag, hoe doen jullie dit? Slaan jullie gewoon de HTML op of parsen jullie het ook terug naar UBB of iets? Aan de ene kant dubbel werk, aan de andere kant denk ik dat de code er netter op wordt.
Zeker als ik de input van sommige browsers zie... Wat een geknoei.
UBB
In dit geval sla je de code op in de database zoals de gebruiker hem intikt. Dus niet met HTML! Op het moment dat je de UBB-code nodig hebt haal je het weer uit de database.doormiddel van een 'parser' word dit gedaan. Dit kan een functie zijn of een class(?). De parser doet dus eigenlijk alleen dit soort dingetjes:
Je zou hier geen dubbele outputs in mogen krijgen...
Wysiwyg
Misschien is het beter als je een standaard editor als TinyMCE of CKeditor. Lijkt mij vrij onwaarschijnlijk dat iemand het 'terug parst' naar UBB want dat is inderdaad dubbelop werk. Daarom snap ik je vraag ook niet helemaal. Je moet begrijpen dat de output van een editor nou eenmaal een kliederboel blijft. Als je daadwerkelijk een redelijk iets in me kaar wilt knutselen ben je lang bezig...
Ik ben zelf ook bezig met een cms en componenten als Tinymce zijn gewoonweg idiaal. Het scheelt gewoon een hoop tijd. Als je later vooralsnog een eigen maakt kan altijd nog! Momenteel heb ik ook een gehele file manager welk bestanden in zowel tinymce als Codemirror kan openen.
Gewijzigd op 07/01/2014 15:11:39 door phpnuke r