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

  • Thomas_H
    Ich habe versucht, Deine Funktion einzubinden, um in einer Datenbank die Herkunft von Angriffsversuchen auf meinen Servern zu dokumentieren.

    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

    Antworten
  • Ich
    Deine Funktion macht doch garnichts! Nur zwei Arrays ohne weiteren Befehl!
    Antworten
    • Andre Rinas
      Hallo, du hast Recht! Die Funktion war irgendwie beschnitten. Es fehlten die letzten 5 Zeilen. Habe die Funktion wieder richtig eingefügt. Danke für die Meldung!
      Antworten

Hinterlasse einen Kommentar

Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Kommentar wird gespeichert
Danke für deinen Kommentar! Sobald er freigegeben wurde erscheint er hier.