Tutorials
Einige nützliche Hilfen und Code-Schnipsel, die ich immer wieder benötige und deshalb hier für alle sammle.
Zurück zur Übersicht
PHP: Funktion um Sonderzeichen durch Entsprechung des Alphabets zu ersetzen
#Tutorials#PHP
Hat man beispielsweise eine Liste mit Namen und möchte diese gruppiert nach dem ersten Buchstaben ausgeben, so kann es vorkommen, dass Namen dabei sind, die mit Sonderzeichen beginnen. Ein Beispiel hierfür wäre das Sonderzeichen Š, welches bei türkischen ab und zu auftritt. Meistens möchte man dann, dass dieser Name unter dem normalen S eingegliedert wird. Die nachfolgende Funktion ersetzt alle diese Sonderzeichen durch die Entsprechung im normalen Alphabet.
Funktion
function characterMap($str){
$bad = array(
'À','à','Á','á','Â','â','Ã','ã','Ä','ä','Å','å','?','?','?','?',
'?','?','?','?','Ç','ç',
'?','?','?','?',
'È','è','É','é','Ê','ê','Ë','ë','?','?','?','?',
'?','?',
'Ì','ì','Í','í','Î','î','Ï','ï',
'?','?','?','?','?','?',
'Ñ','ñ','?','?','?','?',
'Ò','ò','Ó','ó','Ô','ô','Õ','õ','Ö','ö','Ø','ø','?',
'?','?','?','?',
'Š','š','?','?','?','?',
'?','?','?','?','?','?',
'Ù','ù','Ú','ú','Û','û','Ü','ü','?','?',
'Ÿ','ÿ','ý','Ý',
'Ž','ž','?','?','?','?',
'Þ','þ','Ð','ð','ß','Œ','œ','Æ','æ','µ'
);
$good = array(
'A','a','A','a','A','a','A','a','A','a','A','a','A','a','A','a',
'C','c','C','c','C','c',
'D','d','D','d',
'E','e','E','e','E','e','E','e','E','e','E','e',
'G','g',
'I','i','I','i','I','i','I','i',
'L','l','L','l','L','l',
'N','n','N','n','N','n',
'O','o','O','o','O','o','O','o','O','o','O','o','o',
'R','r','R','r',
'S','s','S','s','S','s',
'T','t','T','t','T','t',
'U','u','U','u','U','u','U','e','U','u',
'Y','y','Y','y',
'Z','z','Z','z','Z','z',
'TH','th','DH','dh','ss','OE','oe','AE','ae','u'
);
str_replace($bad,$good,$str);
}
Benutzung
$clean = characterMap('André');
// $clean ist nun 'Andre' weil das é durch e ersetzt wurde
Kommentare
Ich befülle die Variable "city$", welcher zum Beispiel den Wert "Quảng Ngãi" zugewiesen wird. Dann rufe ich Deine Funktion auf mittels
characterMap($city);
Die Funktion enthält das "a" mit Welle obendrauf als "bad-Array", sollte dieses a mit Welle also gegen ein normales a austauschen.
Ich habe also zum Test einige echo-befehle eingebaut, die jeweils den ermittelten Wert für die Variable "$city" ausgeben.
Allerdings kommt das dabei heraus:
City = Quảng Ngãi
str = Quảng Ngãi
str_neu = Quảng Ngãi
City neu= Quảng Ngãi
Rufe ich die Funktion auf mittels
$city_neu = characterMap($city);
bleibt $city_neu leer.
Ergo: keine Konvertierung. Oder was mache ich falsch?
Und was mir auch aufgefallen ist: Du hast einige Fragezeichen in Deiner Funktion
Hinterlasse einen Kommentar