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-Key: 21720

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

Printed on: April 16, 2024 at 15:04 o'clock

Member: Guenni
Guenni Dec 16, 2005 at 15:50:10 (UTC)
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