Como criar um arquivo XML dinamicamente em PHP
Thursday, January 27, 2011 9:51:17 AM
Quem nunca sentiu a necessidade de escrever um arquivo XML dinamicamente ? Pois bem o difícil não é escreve-lo, e sim fazer ele aceitar a sua codificação, ainda mais aqui no brazil onde tempos "ç", "á", "à" dentre outros. Então vamos aos poucos.
Vamos aprender a criar um arquivo XML com a codificação UTF-8, utilizando o PHP;
Se você deseja que uma arquivo *.php seja um XML adicione o seguinte código no seu arquivo:
Você também pode criar um arquivo *.xml e programa-lo em php, =D, como ?! crie um arquivo ".htaccess" com o conteúdo abaixo, e salve.
Detalhes a parte vamos ao que importa, a função abaixo já codifica o arquivo da forma UTF-8
E fica assim, no nosso resultado final:
Vamos aprender a criar um arquivo XML com a codificação UTF-8, utilizando o PHP;
Se você deseja que uma arquivo *.php seja um XML adicione o seguinte código no seu arquivo:
header( 'Cache-Control: no-store, no-cache, must-revalidate' );
header( 'Cache-Control: post-check=0, pre-check=0', false );
header( 'Pragma: no-cache' );
#Acima tempo um código para não salvar no cache para que toda vez que você acesse o arquivo ele seja atualizado
//Abaixo temos a configuração do nosso tipo de arquivo.
header('Content-type: application/xml; charset="UTF-8"',true);
Você também pode criar um arquivo *.xml e programa-lo em php, =D, como ?! crie um arquivo ".htaccess" com o conteúdo abaixo, e salve.
AddHandler application/x-httpd-php .xml
Detalhes a parte vamos ao que importa, a função abaixo já codifica o arquivo da forma UTF-8
<?php
function xmlChar($s){
$chr = array();
$chrRe = array();
$ms = preg_replace("/[0-9a-zA-Z\s\/;:.?=]/", '', $s); //Pega apenas os caracteres que deve ser codificado
for($i=0;$i<strlen($ms);$i++){
$chr[] = $ms[$i]; // Salva em um array o caractere a ser substituído
$chrRe[] = "&#".ord($ms[$i]).";"; // Salva a codificação do caractere a ser substituído
}
return str_replace($chr, $chrRe, $s); // Substitui o caracteres =D
}
?>
E fica assim, no nosso resultado final:
<?php
header( 'Cache-Control: no-store, no-cache, must-revalidate' );
header( 'Cache-Control: post-check=0, pre-check=0', false );
header( 'Pragma: no-cache' );
header('Content-type: application/xml; charset="UTF-8"',true);
function xmlChar($s){
$chr = array();
$chrRe = array();
$ms = preg_replace("/[0-9a-zA-Z\s\/;:.?=]/", '', $s);
for($i=0;$i<strlen($ms);$i++){
$chr[] = $ms[$i];
$chrRe[] = "&#".ord($ms[$i]).";";
}
return str_replace($chr, $chrRe, $s);
}
print '<?xml version="1.0" encoding="utf-8" '.chr(63).'>'."\n";
?>
<fsdev>
<primeiroNo>
<nome><?php echo xmlChar("Flávio de Oliveira Silva")?></nome>
<site><?php echo xmlChar("http://www.flaviosilva.net")?></site>
<texto><?php echo xmlChar("É isso ai pessoal, obrigado pela visita. (áéêç) <- tudo certo XD")?></texto>
</primeiroNo>
</fsdev>


