Illegale Zeichen austauschen / ersetzen

edit | delete

Autor: Ralf v.d.Mark

eingetragen: Freitag, 30. Juli 2010 um 13:40 Uhr (30/2010 Kalenderwoche)

geändert: Mittwoch, 08. März 2023 um 15:09 Uhr (10/2023 Kalenderwoche)

Keywords: utf8 latin1 ersetzen replace Zeichenkonvertierung String Bearbeitung umlaute

Kategorien: PHP, UTF-8 / ISO,

Text:

Ersetzt Zeichen die z. B. in einer Url nicht erlaubt oder in einem Dateinamen zu problemen führen könnten.





Außerdem ist folgendes nicht mehr erlaubt:


alt: utf8_encode($string);


neu: mbconvertencoding($string, 'UTF-8', mblistencodings());

Quellcode:  

/** 
 * Ersetzt Zeichen die z. B. in Url, eMail-Betreff / -header, Dateinamen usw.
 * nicht erlaubt oder zu Problemen fuehren koennten.
 *
 * @param  string $zumReinigen
 * @return string (den gereinigten Text)
 */
function bereinigeString($zumReinigen) {
    $normaleChars = array(
        'Š'=>'S', 'š'=>'s', 'Ð'=>'Dj','Ž'=>'Z', 'ž'=>'z',
        'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'Ae',
        'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E',
        'Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I',
        'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O',
        'Õ'=>'O', 'Ö'=>'Oe','Ø'=>'O', 'Ù'=>'U', 'Ú'=>'U',
        'Û'=>'U', 'Ü'=>'Ue','ü'=>'ue','Ý'=>'Y', 'Þ'=>'B',
        'ß'=>'ss','à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a',
        'ä'=>'ae','å'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e',
        'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i',
        'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o',
        'ô'=>'o', 'õ'=>'o', 'ö'=>'oe','ø'=>'o', 'ù'=>'u',
        'î'=>'i', 'ú'=>'u', 'û'=>'u', 'ý'=>'y', 
        'þ'=>'b', 'ÿ'=>'y', 'ƒ'=>'f', '€'=>'EURO'
    );

    $zumReinigen = str_replace('&', '-and-', $zumReinigen);
    //$zumReinigen = trim(preg_replace('/[^\w\d_ -]/si', '', $zumReinigen));
        //loescht alle illegalen Zeichen
    $zumReinigen = str_replace(' ', '-', $zumReinigen);
    $zumReinigen = str_replace('--', '-', $zumReinigen);

    return strtr($zumReinigen, $normaleChars);
}

echo bereinigeString('Spätzle ä Ä Ü ü Ö ö ß');
  //erbigt: Spatzle-a-A-U-u-O-o-Ss