Tekst opslaan in database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

The Ultimate

The Ultimate

14/07/2012 13:37:04
Quote Anchor link
Hallo,

Probleem:
Tekst die ik uit een database haal en op mijn website weergeef, staat vaak vol met deze tekens: � (een zwarte ruit met een vraagteken erin).

Met name enkele en dubbele quotes zorgen voor problemen, maar ook eurotekens en ampersands.

Vraag:
Stel dat ik (bv. als admin) een artikel wil typen en in een database wil opslaan. Hoe kan ik dat dan het beste doen? Moeten bepaalde tekens voordat ze worden opgeslagen in de database eerst worden omgezet (htmlspecialchars)?

Ik zou wel graag de mogelijkheid willen hebben om zelf bepaalde tags toe te kunnen voegen (<h1>, <h2>, <p>, <b>, etc.) zodat ik de opmaak van de tekst kan beinvloeden.
 
PHP hulp

PHP hulp

26/04/2024 17:48:42
 
 - Diov  -

- Diov -

14/07/2012 13:48:31
Quote Anchor link
De tekst omhelzen door htmlspecialchars().
En ook eens zoeken op utf-8.
 
Wouter J

Wouter J

14/07/2012 13:51:44
Quote Anchor link
De database in moet je nooit aanpassen, altijd de database uit aanpassen.

Kijk eens naar dit voorbeeld welke functie jij graag zou willen gebruiken: http://phphulp.wouterj.nl/utf-8.php
En zorg ook dat je:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<meta charset=utf-8>

Als eerste element in de head hebt.
 
- SanThe -

- SanThe -

14/07/2012 13:52:02
Quote Anchor link
Dem Ian op 14/07/2012 13:48:31:
De tekst omhelzen door htmlspecialchars().


Maar niet als je het in de database zet.
Dan gebruik je mysql_real_escape_string().
 
 - Diov  -

- Diov -

14/07/2012 13:54:49
Quote Anchor link
Ja dat bedoel ik ook.
Maar normaal gezien kan je ook de database een charset meegeven.
Tuurlijk moet je ook mysql_real_escape_string() erom geen zetten (SQL-Injection).
 
Wouter J

Wouter J

14/07/2012 13:55:45
Quote Anchor link
Maar je moet erg GEEN htmlspecialchars omheen zetten. Als je dat doet bij het ingaan van de Database zul je problemen krijgen als je het bericht weer eens aanpast, altijd de functie pas gebruiken wanneer je het ergens op je site echoëd.
 
 - Diov  -

- Diov -

14/07/2012 13:58:58
Quote Anchor link
Tja, Wouter.
Waarom bestaat die functie dan?
http://php.net/manual/en/function.htmlspecialchars.php
http://php.net/manual/en/function.htmlspecialchars-decode.php

Maar via de meta-tags, werkt het natuurlijk ook.
 
Wouter J

Wouter J

14/07/2012 14:00:12
Quote Anchor link
Wat ik zeg, alleen bij het ECHOEN van de data kan je ze gebruiken, niet bij het INVOEGEN van data in een DB.
Dus die functie heeft best wel nut, alleen op de juiste plaats.
Gewijzigd op 14/07/2012 14:00:34 door Wouter J
 
The Ultimate

The Ultimate

14/07/2012 14:44:14
Quote Anchor link
Dus als ik het goed begrijp wordt tekst dus onbewerkt in de database opgeslagen? Maar dat levert in mijn geval toch echt fouten bij het echoen op.

Ik heb de tekst als volgt in de database staan:
<p>&nbsp;</p>
<p><b><u>1. Met wie sluit ik overeenkomsten?</u></b></p>
<p>Wanneer je aan de slag gaat met het opstellen algemene voorwaarden, zul je je allereerst moeten afvragen: “Met wie sluit ik overeenkomsten?”

En dat levert de volgende output op:
1. Met wie sluit ik overeenkomsten?

Wanneer je aan de slag gaat met het opstellen algemene voorwaarden, zul je je allereerst moeten afvragen: ?Met wie sluit ik overeenkomsten??

En met htmlspecialchars het volgende:
<p><b><u>1. Met wie sluit ik overeenkomsten?</u></b></p> <p>Wanneer je aan de slag gaat met het opstellen algemene voorwaarden, zul je je allereerst moeten afvragen: ?Met wie sluit ik overeenkomsten??

EDIT:
De database collatie is utf8-general-ci en in mijn header staat het volgende:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="charset" content="ISO-8859-1" />

Kan het te maken hebben met dat de tekst geknipt en geplakt is vanuit Word?
Gewijzigd op 14/07/2012 14:48:17 door The Ultimate
 
Wouter J

Wouter J

14/07/2012 15:19:50
Quote Anchor link
Die laatste meta tag moet je weghalen.

Tevens zijn de quotes die jij gebruikt niet de normale, je moet " gebruiken en niet “ en dat komt inderdaad door Word.
 
The Ultimate

The Ultimate

14/07/2012 15:34:42
Quote Anchor link
@Wouter:
Ik heb de header aangepast. Klopt het overigens dat een euroteken als volgt in de database wordt opgeslagen: €
 



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.