Illegale Zeichen austauschen / ersetzen
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