login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Speciale karakters... (Opgelost)

Offline Secret - 04/12/2008 22:13 (laatste wijziging 04/12/2008 22:17)
Avatar van SecretNieuw lid Hallo,

Ik heb een vreemd probleem. Ik wil het volgende doen, ik controleer in een string of er ongeldige tekens voorkomen, dit onderdeel werkt. Ik splits m'n string op per letter indien er ongeldige tekens in voorkomen en kijk dan per teken of het een geldig of ongeldig is. De geldige tekens worden in groen weergegeven en de andere in het rood.

Om mijn string te splitsen doe ik het volgende (vereenvoudigd):

$string = ("testë");
echo $string[0];
echo $string[1];
echo $string[2];
echo $string[3];
echo $string[4];

Echter op plaats [4] krijg ik in mijn browser venster een onbekend teken te zien ipv ë. Nu, ik ben eventjes bezig geweest met uitzoeken en vond dat wanneer ik er een "echo $string[5];" bijzet het ë tekentje correct weergegeven werd. Het zou opgelost geraakt zijn indien ik met een tellertje de volledige lengte van de string afliep en alle waardes mooi achter elkaar zette, maar zo kan ik ze geen verschillende kleur geven.

Wat dus ging werken is echo $string[4].$string[5]; om het ë teken weer te geven, maar ik gebruik echo "<span class=\"redtext\">".$string[4]."</span>"."<span class=\"redtext\">".$string[5]."</span>"; voor m'n kleuren, en net dan weer krijg ik het onbekend teken te zien...

Weet iemand raad?

2 antwoorden

Gesponsorde links
Offline Richard - 04/12/2008 22:34
Avatar van Richard Crew algemeen Dat heet nou utf8. Probeer eens de multibyte extensies van PHP te gebruiken. ;)

http://www.php.net/mb
Offline Secret - 05/12/2008 11:48 (laatste wijziging 06/12/2008 10:41)
Avatar van Secret Nieuw lid @JeXus,

Bedankt voor je antwoord, ik ben eventjes bezig geweest met zoeken maar vond nog niets... Wat ik in wezen wil zien lukken is dat er in $test[0]; ë komt te staan, als $test = "ë"; is... Maar ik vermoed dat zo iets niet mogelijk is? Ik merk enkel dat de array hier 2 plaatsen groot zal worden en wanneer $test[0].$test[1]; in echo word gezet het karakter goed word weergegeven.

Ik vond de oplossing:

Op een gegeven punt in mijn code tel ik het aantal karakters in mijn string, ik deed dit eerst met strlen($string);. Echter wanneer er zich ë of ä etc. tekentjes bevonden in de string telden deze voor meer dan een karakter en daar liep het fout. mb_strlen($string, "UTF-8"); loste dit mooi op voor mij... Dank aan @JeXus voor de tip!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.197s