> Nettoyer l\'encodage windows cp1252 en ISO-88591 \"propre\"Si vous avez des utilisateurs sous windows qui saisissent du contenu dans une interface qui l'insèr dans une base en ISO-88591 vous risquez d'avoir des surprises. Cette fonction permet de "nettoyer" l'encodage windows cp1552 en iso-88591 propre.
function purge_iso88591($str)
{
// adapté à partir de http://worldserver3.oleane.com/tthomas/jeucar.html
$cp1252_map = array(
"\\x80" => "euro", /* EURO SIGN */
"\\x82" => ",", /* SINGLE LOW-9 QUOTATION MARK */
"\\x83" => "f", /* LATIN SMALL LETTER F WITH HOOK */
"\\x84" => "'", /* DOUBLE LOW-9 QUOTATION MARK */
"\\x85" => "...", /* HORIZONTAL ELLIPSIS */
"\\x86" => "T", /* DAGGER */
"\\x87" => "T", /* DOUBLE DAGGER */
"\\x88" => "^", /* MODIFIER LETTER CIRCUMFLEX ACCENT */
"\\x89" => "p1000", /* PER MILLE SIGN */
"\\x8a" => "S", /* LATIN CAPITAL LETTER S WITH CARON */
"\\x8b" => "<", /* SINGLE LEFT-POINTING ANGLE QUOTATION */
"\\x8c" => "OE", /* LATIN CAPITAL LIGATURE OE */
"\\x8e" => "Z", /* LATIN CAPITAL LETTER Z WITH CARON */
"\\x91" => "'", /* LEFT SINGLE QUOTATION MARK */
"\\x92" => "'", /* RIGHT SINGLE QUOTATION MARK */
"\\x93" => '"', /* LEFT DOUBLE QUOTATION MARK */
"\\x94" => '"', /* RIGHT DOUBLE QUOTATION MARK */
"\\x95" => ".", /* BULLET */
"\\x96" => "-", /* EN DASH */
"\\x97" => "-", /* EM DASH */
"\\x98" => "", /* SMALL TILDE */
"\\x99" => "(tm)", /* TRADE MARK SIGN */
"\\x9a" => "s", /* LATIN SMALL LETTER S WITH CARON */
"\\x9b" => ">", /* SINGLE RIGHT-POINTING ANGLE QUOTATION*/
"\\x9c" => "oe", /* LATIN SMALL LIGATURE OE */
"\\x9e" => "z", /* LATIN SMALL LETTER Z WITH CARON */
"\\x9f" => "Y", /* LATIN CAPITAL LETTER Y WITH DIAERESIS*/
"€" => "euro", /* EURO SIGN */
"€" => "euro", /* EURO SIGN */
"ƒ" => "f", /* LATIN SMALL LETTER F WITH HOOK */
"…" => "...", /* HORIZONTAL ELLIPSIS */
"†" => "T", /* DAGGER */
"‡" => "T", /* DOUBLE DAGGER */
"ˆ" => "^", /* MODIFIER LETTER CIRCUMFLEX ACCENT */
"‰" => "p1000", /* PER MILLE SIGN */
"Š" => "S", /* LATIN CAPITAL LETTER S WITH CARON */
"Š" => "S", /* LATIN CAPITAL LETTER S WITH CARON */
"Œ" => "OE", /* LATIN CAPITAL LIGATURE OE */
"Œ" => "OE", /* LATIN CAPITAL LIGATURE OE */
"Ž" => "Z", /* LATIN CAPITAL LETTER Z WITH CARON */
"Ž" => "Z", /* LATIN CAPITAL LETTER Z WITH CARON */
"‘" => "'", /* LEFT SINGLE QUOTATION MARK */
"’" => "'", /* RIGHT SINGLE QUOTATION MARK */
"“" => '"', /* LEFT DOUBLE QUOTATION MARK */
"”" => '"', /* RIGHT DOUBLE QUOTATION MARK */
"•" => ".", /* BULLET */
"–" => "-", /* EN DASH */
"—" => "-", /* EM DASH */
"‾" => "", /* SMALL TILDE */
"™" => "(tm)", /* TRADE MARK SIGN */
"š" => "s", /* LATIN SMALL LETTER S WITH CARON */
"š" => "s", /* LATIN SMALL LETTER S WITH CARON */
"œ" => "oe", /* LATIN SMALL LIGATURE OE */
"œ" => "oe", /* LATIN SMALL LIGATURE OE */
"ž" => "z", /* LATIN SMALL LETTER Z WITH CARON */
"ž" => "z", /* LATIN SMALL LETTER Z WITH CARON */
"Ÿ" => "Y" /* LATIN CAPITAL LETTER Y WITH DIAERESIS*/
);
return strtr($str, $cp1252_map);
}
retour