Case Switch und die Umlaute

deintag85

Erfahrenes Mitglied
hallo,
mein dokument ist in UTF-8 kodiert und gespeichert.
Ich habe eine switch-case abfrage die jeden buchstaben in einem string abfragt und entsprechend etwas ausgibt. jedoch klappt es nicht bei umlauten. wo liegt das problem? hab es auch mit utf8_encode/decode probiert aber das macht es nur schlimmer. wenn ich den string ausgebe mit ECHO dann erscheint ganz normal die umlaute äöü aber er erkennt sie bei der abfrage wohl nicht Oô ? kann mir da einer bitte helfen? =)

Code:
$spruch = $_POST["yourname"];
	//$spruch = utf8_encode($spruch);	
	$spruch = strtolower($spruch);	
	$newstring = "";	
	
	echo'<h2>irgendein geheimer text : </h2><p><strong style="color:#d83225;font-size: 16px;">'.strtoupper($spruch).'</strong></p><br />';
	setlocale (LC_ALL, 'de_DE');
	for($i=0;$i<strlen($spruch);$i++){
		switch ($spruch[$i]) {
		case "a":
		case "ä":		
		case "ä":	
		case "Ä":					
			echo "<b>".strtoupper($spruch[$i])."</b> - irgendein geheimer text<br>";
			$javastring .= strtoupper($spruch[$i])." =&gt; irgendein geheimer text<center></center>";
			break;

LG
 
Schau mal ob dir html_entity_decode bei deinem Problem hilft.

Aber abgesehen davon. Du musst doch nur die kleinen Buchstaben vergleichen, da du zu Beginn des Skripts den Text mit strtolower in Kleinbuchstaben umwandelst!?

NACHTRAG:
Was ich vergessen habe. Du darfst nicht auf "ä", "ö", "ü" prüfen sondern du musst "&auml;", "&ouml;","&uuml;" nehmen!
 
Zuletzt bearbeitet:
habs erweitert um:

Code:
	$spruch = html_entity_decode($spruch);

und die abfrage auch

Code:
		case "a":
		case "ä":		
		case "ä":	
		case "Ä":
		case "&auml;":	
		case "&Auml;":

aber tun tut sich auch nicht viel mehr irgendwie :(
wie vorher, gibt er mit echo $spruch den string richtig aus mit umlauten und allem. aber die abfrage scheitert einfach...
 
Wenn möglich, stell mal die komplette Datei zum Download hier rein. Vielleicht liegt der Fehler ja wo andres.
 
ich möchte die datei nicht vollständig reinstellen, sonst hätte ich es von anfang an getan. der teil den ich gepostet habe ist alles was nötig ist. es wird ein string per $_POST übergeben also per formulareingabe. dann wird der string zerlegt und jeder einzelne buchstabe betrachtet. vorher und nacher wird nichts mit dem string angestellt, sodass es unnötig ist mehr quellcode preiszugeben ^^

im kopf steht natürlich

Code:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

daran kanns nicht liegen...
 
hmmmmmmmmmmmmmmmm, also wenn ich den string ausgebe dann zeigt er umlaute. das problem kommt beim zerlegen, was für mich gar keinen sinn irgendwie macht? er gibt beim zerlegen dann bei umlauten ???? aus.....

... es deutet einfach alles daraufhin dass bei der stringzerlegung irgendwas nicht ganz möchte. hab es auch mit substr probiert. da kommen auch die fragezeichen... ich versteh einfach nicht warum ich den string normal ausgeben kann aber wenn ich nur ein zeichen ausgeben will dann gehts nicht Oô

so. es ist vollendet

Code:
mb_substr($spruch,$i,1, 'UTF-8')

ist die lösung und es klappt. juhuuu.
 
Zuletzt bearbeitet:
Zurück