Data opslaan vanuit WYSIWYG editor

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Milo S

Milo S

16/09/2013 15:03:01
Quote Anchor link
Beste,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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;
?>


------------------------------------------------

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
 
PHP hulp

PHP hulp

29/03/2024 00:40:20
 
Milo S

Milo S

05/01/2014 21:55:38
Quote Anchor link
Eindelijk weer tijd om hier weer eens mee verder te gaan. Daar waar het allemaal goed leek te gaan gaat het nog niet geweldig.

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.
 
Phpnuke r

phpnuke r

07/01/2014 15:08:49
Quote Anchor link
Maak je nou een UBB editor of een WYSYWIG editor? Dit is namelijk echt het verschil tussen appels en peren.

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
[b] > <strong>

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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.