€ werkt 'zomaar' niet meer
Ik gebruik voor het forum en berichten pagina dezelfde ubb functie.
Alleen nu heb ik in al mijn pagina's dat je een bericht met een euro teken kan krijgen het volgende gezet in de query:
"Je hebt hier €".$bedrag." mee verdient";
Nu kreeg ik in mijn berichten scherm dan ook het bericht:
Je hebt hier €123 mee verdient
(Nu dus niet meer)
Maar 'opeens' krijg ik nu te zien:
Je hebt hier €123 mee verdient
Als je een bericht stuurt naar iemand anders en je typt een euro teken € dan krijgt hij hem wel goed aan.
Als ik nu in de database kijk staat er bij het goede bericht € en bij het verkeerde €
Hieronder staat enkele code:
berichten.php / forum.php
ubb.php
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
function ubb($text){
$text = htmlspecialchars($text);
$text = nl2br($text);
$text = str_replace("€","€", $text);
return $tekst;
}
?>
function ubb($text){
$text = htmlspecialchars($text);
$text = nl2br($text);
$text = str_replace("€","€", $text);
return $tekst;
}
?>
Dit is mijn huidige uitkomst:
Als ik een € in een query plaats komt er in berichten.php dit te staan: Je hebt hier €123 mee verdient.
Als ik € in een query plaats komt er in berichten.php dit te staan: Je hebt hier €123 mee verdient.
Ziet iemand iets raars in mijn code, want ik begrijp het niet meer.
(Ik ben bang dat mijn topic erg onoverzichtelijk is, dus mijn excuses daarvoor.)
Gewijzigd op 04/01/2013 13:23:33 door Tom aan t Goor
Kijk eerst wat er in de database terecht komt. Gebruik ook HEX() om de inhoud te analyseren.
Kijk dan wat er in de HTML source verschijnt.
Dan weet je in welk onderdeel je verder moet zoeken.
In je ubb functie maak je de hele tijd gebruik van $text en daarna return je $tekst?
dit is een werkend voorbeeld
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
function ubb($text){
echo 'debug in: '.$text."\n";
$text = htmlspecialchars($text);
echo 'debug na htmlspecialchars: '.$text."\n";
$text = nl2br($text);
echo 'debug na nl2br: '.$text."\n";
$text = str_replace("€","€", $text);
echo 'debug na str_replace: '.$text."\n";
return $text;
}
echo ubb('Je hebt hier €123 mee verdiend');
?>
Uitvoer:
debug in: Je hebt hier €123 mee verdiend
debug na htmlspecialchars: Je hebt hier &euro;123 mee verdiend
debug na nl2br: Je hebt hier &euro;123 mee verdiend
debug na str_replace: Je hebt hier &euro;123 mee verdiend
Je hebt hier &euro;123 mee verdiend
function ubb($text){
echo 'debug in: '.$text."\n";
$text = htmlspecialchars($text);
echo 'debug na htmlspecialchars: '.$text."\n";
$text = nl2br($text);
echo 'debug na nl2br: '.$text."\n";
$text = str_replace("€","€", $text);
echo 'debug na str_replace: '.$text."\n";
return $text;
}
echo ubb('Je hebt hier €123 mee verdiend');
?>
Uitvoer:
debug in: Je hebt hier €123 mee verdiend
debug na htmlspecialchars: Je hebt hier &euro;123 mee verdiend
debug na nl2br: Je hebt hier &euro;123 mee verdiend
debug na str_replace: Je hebt hier &euro;123 mee verdiend
Je hebt hier &euro;123 mee verdiend
Je ziet het dus verkeerd gaan als htmlspacialchars() de '€' vertaalt in '&euro;'.