Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Tenho um PHP que gera um arquivo XML baseado na minha tabela, tudo funciona sem problemas, porém, os acentos não aparecem, tentei de tudo, mudar o cabeçalho do xml, usar <![CDATA[""]]>, utf8 encode e não consigo utilizar acentuação.
Se eu criar um arquivo no notepad, SalvarComo codificação UTF8 o sistema funciona perfeitamente, com acentos e tudo mais, porém se eu utilizar o xml criado pelo PHP os acentos somem.
Alguém pode me ajudar ?
Segue o código do PHP que gera o XML
<?
include("conectar.php");
//SQL
$sql = mysql_query("SELECT * FROM contatos ORDER BY id ASC");
//TOTAL DE LINHAS AFETADAS PELA CONSULTA
$row = mysql_num_rows($sql);
//VERIFICA SE A PESQUISA RETORNOU ALGUMA LINHA
if($row > 0) {
//ARQUIVO
$arquivo = "contatos.xml";
//ABRE O ARQUIVO(SE NÃO EXISTIR, CRIA)
$ponteiro = fopen($arquivo, "w");
//ESCREVE NO ARQUIVO XML
fwrite($ponteiro, "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>\r\n");
fwrite($ponteiro, "<contato>\r\n");
for($i=0; $i<$row; $i++) {
//PEGA OS DADOS DO SQL
$id = mysql_result($sql,$i,"contatos.ID");
$nome = mysql_result($sql,$i,"contatos.NOME");
$telefone= mysql_result($sql,$i,"contatos.TELEFONE");
//MONTA AS TAGS DO XML
$conteudo = "<nome=\"$nome\" telefone=\"$telefone\" /> \r\n";
//ESCREVE NO ARQUIVO
fwrite($ponteiro, $conteudo);
}//FECHA FOR
//FECHA A TAG AGENDA
fwrite($ponteiro, "</contato>");
//FECHA O ARQUIVO
fclose($ponteiro);
//MENSAGEM
echo "O arquivo <b>".$arquivo."</b> foi gerado com SUCESSO !";
}//FECHA IF($row)
?>
Consegui resolver o problema acima mas agora apareceu outro, de duas uma, ou eu viro o cara mais paciente do mundo ou vou ficar maluco em 2 anos.
O problema agora é o seguinte.::
Se o XML for criado com aspas duplas ou aspas simples o XML retorna erro, até aí tudo bem, já esperava isso, usei então eregi_replace (usei tb preg_replace) para remover as aspas simples e duplas do meu registro.
$str = eregi_replace ("(\"|\')", "", $str);
Funciona que é uma beleza com aspas duplas, mas se o usuário digitar uma palavra com aspas simples (') no campo o php retorna erro.::
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Aspas Simples' "
Achei então que seria algum erro com o código, fiz um arquivo de teste para checar essa dúvida.
<?php
$teste = "Teste com 'Aspas Simples' e \"Aspas Duplas\" ";
$teste = eregi_replace ("(\"|\')", "", $teste);
echo $teste;
?>
E funcionou sem problemas, removeu as aspas simples e duplas da minha frase, a questão é porque cargas d´água, não funciona na hora de gerar o xml e retorna esse erro ?
Quanto mais mexo com PHP me sinto mais burro.
Alguém sabe como resolver isso ?
Carregando comentários...