Hallo,

Momenteel loop ik tegen een fout aan met het weergeven van mijn tekst vanuit de database.
De tekst die ik oproep uit mijn database geeft die niet weer i.c.m. mijn ubb script.

Deze tekst staat in mijn database:
Wij zijn CP-Webcreaties.<noscript>é
We bezorgen websites met een volledig beheer. Momenteel zit het volledig in de ontwerpfase. CP-Webcreaties bestaat uit een persoon die script als hobby.
Het doel van CP-Webcreaties is om &eacute;&eacute;n op maat gemaakt beheer voor uw website te cre&euml;ren. Ook het aanbod is zeer uitgebreid. Wij kunnen onder andere een forum, een gastenboek en foto galerijen leveren.


Ik laat die door ubb.php gaan:

ubb.php
<?php
function UBB($bericht) {
	$bericht = htmlspecialchars($bericht, ENT_HTML5);
	$bericht = nl2br($bericht);

	//enters
	$bericht = str_replace('\n', '', $bericht);
	$bericht = str_replace('\r', '<br>', $bericht);
	//spatie
	$bericht = str_replace('[tab]', '<font style="color:none;">&nbsp;&nbsp;&nbsp;&nbsp;</font>', $bericht);
	// URLs met tags maken
	$bericht = preg_replace("#\[url\](http)(.+?)\[/url\]#is","<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>",$bericht);
	$bericht = preg_replace("#\[url\](mailto:)(.+?)\[/url]#is","<a href=\"\\1\\2\" target=\"_blank\">\\2</a>",$bericht);
	$bericht = preg_replace("#\[mail\](.+?)\[/mail\]#is","\\1",$bericht);
	$bericht = preg_replace("#\[url\](.+?)\[/url\]#is","<a href=\"http://\\1\" target=\"_blank\">\\1</a>",$bericht);
	$bericht = preg_replace("#\[url=(http|mailto)(.+?)\](.+?)\[/url\]#is","<a href=\"\\1\\2\" target=\"_blank\">\\3</a>",$bericht);
	$bericht = preg_replace("#\[url=(.+?)\](.+?)\[/url\]#is","<a href=\"http://\\1\" target=\"_blank\">\\2</a>",$bericht);
	// Cursief
	$bericht = preg_replace("#\[i\](.+?)\[/i\]#is","<i>\\1</i>",$bericht);
	// Onderstreept
	$bericht = preg_replace("#\[u\](.+?)\[/u\]#is","<u>\\1</u>",$bericht);
	// Vetgedrukt
	$bericht = preg_replace("#\[b\](.+?)\[/b\]#is","<b>\\1</b>",$bericht);
	// Doorstreept
	$bericht = preg_replace("#\[s\](.+?)\[/s\]#is","<s>\\1</s>",$bericht);
	//gecentreerd
	$bericht = preg_replace("#\[center\](.+?)\[/center\]#is","<div align='center'>\\1</div>",$bericht);
	// Plaatjes
	$bericht = preg_replace("#\[img\](http)(.+?)\[/img\]#is","<img src=\"\\1\\2\" alt=\"Plaatje\" >",$bericht);
	$bericht = preg_replace("#\[img\](.+?)\[/img\]#is","<img src=\"http://\\1\" alt=\"Plaatje\" >",$bericht);
	// Kleur
	$bericht = preg_replace("#\[color=(.+?)\](.+?)\[/color\]#is","<font color=\"\\1\">\\2</font>",$bericht);
	// Grootte
	$bericht = preg_replace("#\[size=(.+?)\](.+?)\[/size\]#is","<font size=\"\\1\">\\2</font>",$bericht);
	// Smileys
	$bericht = str_replace(":)"," <img src=\"/img/smilies/smile.gif\" alt=\"Smilie\" >",$bericht);
	$bericht = str_replace("8|"," <img src=\"/img/smilies/huh.gif\" alt=\"Smilie\" >",$bericht);
	$bericht = str_replace(":o"," <img src=\"/img/smilies/ohmy.gif\" alt=\"Smilie\" >",$bericht);
	$bericht = str_replace(";)"," <img src=\"/img/smilies/wink.gif\" alt=\"Smilie\" >",$bericht);
	$bericht = str_replace("*D"," <img src=\"/img/smilies/happy.gif\" alt=\"Smilie\" >",$bericht);
	$bericht = str_replace(":P"," <img src=\"/img/smilies/tongue.gif\" alt=\"Smilie\" >",$bericht);
	$bericht = str_replace(":D"," <img src=\"/img/smilies/biggrin.gif\" alt=\"Smilie\" >",$bericht);
	$bericht = str_replace("8)"," <img src=\"/img/smilies/cool.gif\" alt=\"Smilie\" >",$bericht);
	$bericht = str_replace("*-)"," <img src=\"/img/smilies/rolleyes.gif\" alt=\"Smilie\" >",$bericht);
	$bericht = str_replace(":?"," <img src=\"/img/smilies/dry.gif\" alt=\"Smilie\" >",$bericht);
	$bericht = str_replace(":@"," <img src=\"/img/smilies/mad.gif\" alt=\"Smilie\" >",$bericht);
	$bericht = str_replace(":("," <img src=\"/img/smilies/sad.gif\" alt=\"Smilie\" >",$bericht);
	$bericht = str_replace("8-)"," <img src=\"/img/smilies/unsure.gif\" alt=\"Smilie\" >",$bericht);
	$bericht = str_replace(":|"," <img src=\"/img/smilies/blink.gif\" alt=\"Smilie\" >",$bericht);
	$bericht = str_replace("|:-|"," <img src=\"/img/smilies/ph34r.gif\" alt=\"Smilie\" >",$bericht);
	$bericht = str_replace("|-)"," <img src=\"/img/smilies/sleep.gif\" alt=\"Smilie\" >",$bericht);
	$bericht = str_replace("(l)"," <img src=\"/img/smilies/wub.gif\" alt=\"Smilie\" >",$bericht);
	$bericht = str_replace(":s"," <img src=\"/img/smilies/wacko.gif\" alt=\"Smilie\" >",$bericht);

	return $bericht;
}
?>


Daarnaast heb ik de bovenstaande tekst ook in test.php gezet.
<?php include('config.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style>
body{
	font-family:Arial, Helvetica, sans-serif;
}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php
	$tb1sql1		= "SELECT * FROM textbox_1 WHERE `ID` = '2'";
	$tb1query1		= mysql_query($tb1sql1);
	$tb1fetch1 = mysql_fetch_assoc($tb1query1);
$test	= 'Wij zijn CP-Webcreaties.<noscript>é
We bezorgen websites met een volledig beheer. Momenteel zit het volledig in de ontwerpfase. CP-Webcreaties bestaat uit een persoon die script als hobby.
Het doel van CP-Webcreaties is om &eacute;&eacute;n op maat gemaakt beheer voor uw website te cre&euml;ren. Ook het aanbod is zeer uitgebreid. Wij kunnen onder andere een forum, een gastenboek en foto galerijen leveren.';
echo ubb($test);
?>
</body>
</html>

Output:
Bovenstaande tekst goed

<?php include('config.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style>
body{
	font-family:Arial, Helvetica, sans-serif;
}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php
	$tb1sql1		= "SELECT * FROM textbox_1 WHERE `ID` = '2'";
	$tb1query1		= mysql_query($tb1sql1);
	$tb1fetch1 = mysql_fetch_assoc($tb1query1);
$test	= 'Wij zijn CP-Webcreaties.<noscript>é
We bezorgen websites met een volledig beheer. Momenteel zit het volledig in de ontwerpfase. CP-Webcreaties bestaat uit een persoon die script als hobby.
Het doel van CP-Webcreaties is om &eacute;&eacute;n op maat gemaakt beheer voor uw website te cre&euml;ren. Ook het aanbod is zeer uitgebreid. Wij kunnen onder andere een forum, een gastenboek en foto galerijen leveren.';
echo ubb($tb1fetch1['tekst']);
?>
</body>
</html>

Output:
Leeg

<?php include('config.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style>
body{
	font-family:Arial, Helvetica, sans-serif;
}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php
	$tb1sql1		= "SELECT * FROM textbox_1 WHERE `ID` = '2'";
	$tb1query1		= mysql_query($tb1sql1);
	$tb1fetch1 = mysql_fetch_assoc($tb1query1);
$test	= 'Wij zijn CP-Webcreaties.<noscript>é
We bezorgen websites met een volledig beheer. Momenteel zit het volledig in de ontwerpfase. CP-Webcreaties bestaat uit een persoon die script als hobby.
Het doel van CP-Webcreaties is om &eacute;&eacute;n op maat gemaakt beheer voor uw website te cre&euml;ren. Ook het aanbod is zeer uitgebreid. Wij kunnen onder andere een forum, een gastenboek en foto galerijen leveren.';
echo $tb1fetch1['tekst'];
?>
</body>
</html>

Output:
Wij zijn CP-Webcreaties.


<?php
function UBB($bericht) {
	// doe wat nuttige UBB-dingen!
}
?>


en dit:

<?php
echo ubb($tb1fetch1['tekst']);
?>


Zoals je hier ziet missen er wat hoofdletters.
Dat is inderdaad een slordige fout maar lost het probleem helaas niet op. (Net geprobeerd)

Het probleem doet zich niet voor als ik de é uit de tekst in de database haal. Dan geeft hij de tekst weer. De vreemde tekens/symbolen zorgen ervoor dat ik een lege output krijg.
Gokje.....PHP 5.4 of 5.5? Stap over op UTF-8 of pas al je htmlspecialchars() aan naar:

htmlspecialchars($string, ENT_COMPAT | ENT_HTML401, 'ISO-8859-1')
Php 5.4.25 Installed


Ja ik zit inderdaad op php versie 5.4

Als ik de bovenstaande regel invoer die jij daar neerzet krijg ik op de plek van een é een wit ruitje met een vraagteken erin.

Kan ik dit oplossen door naar UTF-8 over te gaan? En zo ja kan je me een klein duwtje in de rug geven over hoe ik dit kan doen?
Je bestanden opslaan als UTF-8 encoding met je editor, UTF-8 headers te gebruiken, en je database ook op UTF-8 in te stellen, en deze geforceerd ook UTF-8 te laten gebruiken.

Verder zijn de functies van MySQL verouderd, dus ik zou je eerder MySQLikunnen aanraden.
Ik wil over gaan op PDO op ten duur. Waarom niet nu al? Ik wil beetje bij beetje doorgaan. Niet halverwege stoppen en weer beginnen aan een andere deel van de site. Dan doe je steeds maar de helft.

Hoe moet ik de htmlspecialchars maken als ik de database de bestanden heb aangepast naar utf-8/utf8_general_ci?(elke kolom en daarna de tabellen de collatie ook)

Als ik de htmlspecialchars namelijk htmlspecialchars($bericht); zo laat geeft die nog steeds niks weer als er een vreemd teken instaat.

<?php
 htmlspecialchars($string, ENT_COMPAT | ENT_HTML401, 'ISO-8859-1') 
?>

Deze moet je dan gebruiken bij het ophalen van alle data uit je database (dus niet gebruiken bij het inserten)
Dank je voor je hulp.

Reageren