O foco do uso desta função é quando você quer criar um documento no padrão windows.
Geralmente eu tinha problemas quando vinha palavras acentuadas para eu criar PDF ou qualquer outreo documento windows via PHP, podia fazer uma gambiarra de converser para a codificação windows (CP1252) masssss ….
Deêm uma olhada na função, é bastante simplezinha:
/**
* Função que pega um texto com acentos e converte para entidades
* windows, faz o processo inverso de passado true no segundo parâmetro.
* @author Julio Luiz <bfmaster_duran.at.yahoo.com.br>
* @license http://creativecommons.org/licenses/by-sa/3.0
* @param String $string
* @param Boolean $inverte
* @return String
*/
function wincharsentities($string, $inverte = false) {
$string = htmlentities($string, ENT_QUOTES);
$tr_windows_1252 = array(
"\x80"=> '€',"\x81"=> '',"\x82"=> '‚',
"\x83"=> 'ƒ',"\x84"=> '„',"\x85"=> '…',
"\x86"=> '†',"\x87"=> '‡',"\x88"=> 'ˆ',
"\x89"=> '‰',"\x8A"=> 'Š',"\x8B"=> '‹',
"\x8C"=> 'Œ',"\x8D"=> '',"\x8E"=> 'Ž',"\x8F"=> '',
"\x90"=> '',"\x91"=> '‘',"\x92"=> '’',
"\x93"=> '“',"\x94"=> '”',"\x95"=> '•',
"\x96"=> '–',"\x97"=> '—',"\x98"=> '˜',
"\x99"=> '™',"\x9A"=> 'š',"\x9B"=> '›',
"\x9C"=> 'œ',"\x9D"=> '',"\x9E"=> 'ž',
"\x9F"=> 'Ÿ',"\xA0"=> ' ',"\xA1"=> '¡',
"\xA2"=> '¢',"\xA3"=> '£',"\xA4"=> '¤',
"\xA5"=> '¥',"\xA6"=> '¦',"\xA7"=> '§',
"\xA8"=> '¨',"\xA9"=> '©',"\xAA"=> 'ª',
"\xAB"=> '«',"\xAC"=> '¬',"\xAD"=> '',
"\xAE"=> '®',"\xAF"=> '¯',"\xB0"=> '°',
"\xB1"=> '±',"\xB2"=> '²',"\xB3"=> '³',
"\xB4"=> '´',"\xB5"=> 'µ',"\xB6"=> '¶',
"\xB7"=> '·',"\xB8"=> '¸',"\xB9"=> '¹',
"\xBA"=> 'º',"\xBB"=> '»',"\xBC"=> '¼',
"\xBD"=> '½',"\xBE"=> '¾',"\xBF"=> '¿',
"\xC0"=> 'À',"\xC1"=> 'Á',"\xC2"=> 'Â',
"\xC3"=> 'Ã',"\xC4"=> 'Ä',"\xC5"=> 'Å',
"\xC6"=> 'Æ',"\xC7"=> 'Ç',"\xC8"=> 'È',
"\xC9"=> 'É',"\xCA"=> 'Ê',"\xCB"=> 'Ë',
"\xCC"=> 'Ì',"\xCD"=> 'Í',
"\xCE"=> 'Î',"\xCF"=> 'Ï',"\xD0"=> 'Ð',
"\xD1"=> 'Ñ',"\xD2"=> 'Ò',"\xD3"=> 'Ó',
"\xD4"=> 'Ô',"\xD5"=> 'Õ',"\xD6"=> 'Ö',
"\xD7"=> '×',"\xD8"=> 'Ø',"\xD9"=> 'Ù',
"\xDA"=> 'Ú',"\xDB"=> 'Û',"\xDC"=> 'Ü',
"\xDD"=> 'Ý',"\xDE"=> 'Þ',"\xDF"=> 'ß',
"\xE0"=> 'à',"\xE1"=> 'á',"\xE2"=> 'â',
"\xE3"=> 'ã',"\xE4"=> 'ä',"\xE5"=> 'å',
"\xE6"=> 'æ',"\xE7"=> 'ç',"\xE8"=> 'è',
"\xE9"=> 'é',"\xEA"=> 'ê',"\xEB"=> 'ë',
"\xEC"=> 'ì',"\xED"=> 'í',"\xEE"=> 'î',
"\xEF"=> 'ï',"\xF0"=> 'ð',"\xF1"=> 'ñ',
"\xF2"=> 'ò',"\xF3"=> 'ó',"\xF4"=> 'ô',
"\xF5"=> 'õ',"\xF6"=> 'ö',"\xF7"=> '÷',
"\xF8"=> 'ø',"\xF9"=> 'ù',"\xFA"=> 'ú',
"\xFB"=> 'û',"\xFC"=> 'ü',"\xFD"=> 'ý',
"\xFE"=> 'þ',"\xFF"=> 'ÿ', "\x22" => '"'
);
return ($inverte)
? str_replace(array_keys($tr_windows_1252), array_values($tr_windows_1252), $string)
: str_replace(array_values($tr_windows_1252), array_keys($tr_windows_1252), $string);
Pronto, agora para usar, basta fazer assim:
$string = wincharsentities($string_a_ser_convertida);
Qualquer dúvida com o uso dela, utilizem o fórum WMOnline de PHP 