waldschr4t
Goto Top

Umlaute in Switch-Anweisung

Hallo! Wir haben ein Problem mit den Umlauten in der Switch-Anweisung!

// überprüfen ob ein Name nur zugelassene Zeichen enthält
function isname($string)
{
	for($i=0;$i<strlen($string);$i++)
	{
		echo ord($string[$i]) . "  
";  
		switch($string[$i])
		{
			case "A":  
			case "B":  
			case "C":  
                                               ........
			case "w":  
			case "x":  
			case "y":  
			case "z":  
			case ".":  
			case "-":  
			case 'ä':  
			case 'ü':  
			case 'ö':  
			case 'ß':  
			case "Ä":  
			case "Ü":  
			case "Ö":  
			case " ":  
			break;
			default:
				return false;
			
		}
	}
	return true;
}


Als ascii-code sind alle Sonderzeichen 195, also kommt man in den default-Zweig. Wie kann man das lösen? Danke!

Content-ID: 21720

Url: https://administrator.de/contentid/21720

Ausgedruckt am: 22.11.2024 um 22:11 Uhr

Guenni
Guenni 16.12.2005 um 16:50:10 Uhr
Goto Top
@WaldSchr4T

Hi,

versuch's mal so:

Ein Text:
$text="Düsseldorf";  
Textlänge in tl1 speichern:
$tl1=strlen($text);
Die folg. Funktion durchsucht $text nach den in den eckigen Klammern, gültigen
Zeichen. Wird ein Zeichen gefunden, das nicht in den eckigen Klammern
aufgelistet ist, wird die Suche abgebrochen, die Anzahl der bis dahin
gefundenen Zeichen wird in $tl2 gespeichert, das Ergebnis in $erg, bzw. $erg:
$tl2=ereg("[a-zA-ZäöüÄÖÜß]{0,}",$text,$erg);  
//Textlängenvergleich und Ergebnisausgabe:
if($tl1==$tl2){
echo "$erg ist OK!";  
}else{
			//echo "$erg ist nicht OK!"; Testausgabe vom Ergebnis 
			echo "$text ist nicht OK!";  
			}

Gruß
Günni