Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala galera, tudo certo? Hoje sou eu precisando de uma ajuda aqui.
Estou montando uma aplicação que vai ler alguns arquivos e suas linhas. Abaixo parte do código:
public function processa() {
while ( ! feof ( $this->_arquivo ) ) {
list ( $tipoRegistro, $linha ) = fscanf ( $this->_arquivo, '%02d%248[ -~]' );
// o restante do código
}
fclose ( $this->_arquivo );
}
Um exemplo de linha que preciso ler:
02 LUCIANE 1150 OUTROS SERVIÇOS/PACOTE RSNTI/Instalação de hardwar000000000000000
Preciso pegar primeiro os 2 primeiros caracteres do arquivo (%02d), que está OK. Depois, preciso pegar todo o resto (o que fazer com ele depende do valor dos 2 primeiros caracteres), mas quando tem qualquer caractere acentuado, o fscanf para de contar a linha daí em diante. Se eu der um var_dump em $linha:
string(192) " LUCIANE 1150 OUTROS SERVI"
// quando o esperado era
string(248) " LUCIANE 1150 OUTROS SERVIÇOS/PACOTE RSNTI/Instalação de hardwar000000000000000 "
Procurei no Oráculo e encontrei outras pessoas com o mesmo problema, mas nenhuma solução. Alguém já passou por isto e conseguiu resolver?
Todos os arquivos estão salvos em UTF-8.
Carlos Eduardo
Carregando comentários...