Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia,
estou com problemas para ler um ponteiro.
O meu txt é mais ou menos assim:
Fulano de Tal Júnior Desenvolvedor 11997373355
Beltrano de Castro Estagiario 21999999999
Alex de Oliveira Desenvolvedor 21999999999 Estou usando o seguinte codigo para ler cada campo, que é delimitado com espaçamento pré-definido:
<?php
$ponteiro = fopen('arquivo1.txt', 'r');
while(!feof($ponteiro)){
$linha = fgets($ponteiro,4096);
echo $nome = substr($linha, 1, 40).'<br>';
echo $ddd = substr($linha, 126, 2).'<br><br>';
}
fclose($ponteiro);
?>
O problema é que o retorno do campo DDD está confuso. O campo NOME retorna corretamente, mas o DDD não está correto.
Este código está retornando o seguinte:
Fulano de Tal Júnior
Beltrano de Castro
21
Alex de Oliveira
2
Sendo que eu esperava o seguinte resultado:
Fulano de Tal Júnior
11
Beltrano de Castro
21
Alex de Oliveira
21
Alguém já passou por algo parecido?
Gabriel,
o arquivo não é exatamente como o que passei. Exemplifiquei para ilustrar mesmo.
Você já teve esse tipo de problema? Esta variação na exibição...
Posso passar exatamente o arquivo.
Refiz o codigo seguindo o txt que passei no post
O codigo ficou assim:
<?php
$ponteiro = fopen('arquivo3.txt', 'r');
while(!feof($ponteiro)){
$linha = fgets($ponteiro,4096);
echo $nome = substr($linha, 0, 25).'<br>';
echo $cargo = substr($linha, 26, 18).'<br>';
echo $ddd = substr($linha, 44, 2).'<br>';
echo $telefone = substr($linha, 47, 9).'<br><br>';
}
fclose($ponteiro);
?> O resultado não é o esperado:
Fulano de Tal Júnior [/size]
Desenvolvedor [/size]
11[/size]
97373355 [/size]
Beltrano de Castro [/size]
stagiario 2[/size]
19[/size]
9999999 [/size]
Alex de Oliveira [/size]
esenvolvedor 2[/size]
19[/size]
9999999 [/size]
Deveria vir assim:[/size]
Fulano de Tal Júnior [/size]
Desenvolvedor [/size]
11[/size]
97373355 [/size]
Beltrano de Castro [/size]
stagiario 2[/size]
21
99999999 [/size]
Alex de Oliveira [/size]
esenvolvedor 2[/size]
21
99999999[/size]
é como se ele saltasse uma posição a partir da segunda linha... muito estranho. [/size]
usa uma ER para nao ter essa confusao na substr?
Oi
usando o modelo que passou, só teria que adicionar um separador:
"--"
Fulano de Tal Júnior --Desenvolvedor --11997373355
Beltrano de Castro --Estagiario --21999999999
Alex de Oliveira --Desenvolvedor --21999999999
<?php
$arquivo = "a.txt";
$fp = fopen($arquivo, 'r');
if (fgets($fp)) {
$f = file($arquivo);
foreach ($f as $value) {
$split = preg_split('[--]', $value);
echo "Nome: ", $split[0], "<br>";
echo "Ocupacao: ", $split[1], "<br>";
echo "DDD: ", substr($split[2], 0, 2), "<br>";
}
}
fclose($fp);
?>
Saida:
*Nome: Fulano de Tal Júnior
Ocupacao: Desenvolvedor
DDD: 11
Nome: Beltrano de Castro
Ocupacao: Estagiario
DDD: 21
Nome: Alex de Oliveira
Ocupacao: Desenvolvedor
DDD: 21*
@criatividade zero e @Electronic, removi a conversa paralela.
@topic:
<?php
$file = file_get_contents('a.txt');
preg_match_all('/(?P<name>\w+)\s{2,}(?P<carrer>\w+)\s{2,}(?P<phone>\w+)\n/', $file, $matches);
echo '<pre>';
foreach($matches['name'] AS $each) {
echo $each, '<br />';
}
foreach($matches['carrer'] AS $each) {
echo $each, '<br />';
}
foreach($matches['phone'] AS $each) {
echo $each, '<br />';
}
echo '<hr />';
var_dump($matches);felipebmfaria
debatemos sobre a formatação do seu arquivo - vc ja tem TXT ou ainda esta criando
vale a pena formatar de forma flexivel, no mais a ER do William pode resolver se vc nao puder reformatar os TXT
Pessoal,
desculpa pela demora na resposta, ontem estive fora da empresa e não pude responder.
O jeito foi inserir 'separadores' mesmo. Vamos ver se aceitam.
De qualquer forma muito obrigado pela força.
[RESOLVIDO]
Se o arquivo é exatamente igual ao que você passou como exemplo, seus substr's estão errados.
3º - O DD inicia-se no caracter 44 (posição 43) e não na 126:
As saídas que você enviou, não coferem nenhum pouco com o txt e muito menos com os códigos utilizados.
Essa deveria ser a saída da primeira linha:
>
ulano de Tal Júnior Desenvolvedor