Ir para conteúdo
Fórum Script Brasil
  • 0

Condição para inserir palavra em arquivo TXT


Luis Vagner

Pergunta

Pessoal, estou com um problemão e não estou conseguindo resolver...

Estou abrindo e lendo todo o conteudo de um arquivo txt porém eu preciso do seguinte

Se no 43 caractere tiver um espaço e o 38 caractere for igual 9 e se o 39 caractere for igual a 1 então ele coloca "SMT" no espaço do 43 caractere.

isso ele vai fazer para todas as linhas do txt.

Só para entender melhor segue o conteudo do txt

000200922320090226041720090227013900009123 C0000000000499

Ficaria assim:(Obs: tinha 7 espaços em branco entre o 3 e o C com a inclusão do SMT ficou apenas 4 espaços em branco)

000200922320090226041720090227013900009123SMT C0000000000499

Editado por Luis Vagner
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

coisa de maluco mesmo né!? rs..rs.. hehe

eu estou tentando assim, mas ele loja o DID em tudo que é espaço e junta todas as linhas...

// abre o arquivo colocando o ponteiro de escrita no final

$arquivo = fopen('Conversao_09032009_0758.txt','r+');

if ($arquivo) {

while(true) {

$linha = fgets($arquivo);

if ($linha==null) break;

// busca na linha atual o conteudo que vai ser alterado

if (preg_match("/ /", $linha)) {

$string .= str_replace(" ","DID", $linha);

}else {

$string.= $linha;

}

}

// move o ponteiro para o inicio pois o ftruncate() não fara isso

rewind($arquivo);

// truca o arquivo apagando tudo dentro dele

ftruncate($arquivo, 0);

// reescreve o conteudo dentro do arquivo

if (!fwrite($arquivo, $string)) die('Não foi possível atualizar o arquivo.');

echo 'Arquivo atualizado com sucesso';

fclose($arquivo);

}

Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal já estou quase conseguindo fazer a bagaça rs..rs.. minha dúvida agora é como faço para inserir por exemplo o SBC no primeiro espaço em brando da esquerda para a direita da linha mantendo a estrutura de todo txt na mesma forma depois?

$arquivo = "Conversao_09032009_0758.txt";

//Verifica se o arquivo existe

if (file_exists($arquivo)) {

$fp = fopen($arquivo,"r+");

$f_contents = file ($arquivo);

//Se o arquivo tiver algum conteúdo

if ($f_contents == TRUE){

foreach ($f_contents as $linha) {

$corta = substr($linha,42,1);

$cond1 = substr($linha,38,1);

$cond2 = substr($linha,39,1);

if ($corta == " " and $cond1 =="9" and $cond2 =="2"){

preg_match(" ", $linha);

$string .= str_replace(" ", "SBC", $linha);

// move o ponteiro para o inicio pois o ftruncate() não fara isso

rewind($fp);

// truca o arquivo apagando tudo dentro dele

ftruncate($fp, 0);

// reescreve o conteudo dentro do arquivo

if (!fwrite($fp, $string)) die('Não foi possível atualizar o arquivo.');

echo "Arquivo atualizado com sucesso";

echo "<b>SBC</b><br>";

}else{

echo "<b>Existe conteúdo no caractere 44!</b><br>";

}

}

fclose($fp);

}//Se não tiver nenhum conteúdo no arquivo mostra a mensagem

else{

echo "O arquivo $arquivo não tem nenhum conteúdo!";

}

}//Se não existir o arquivo mostra a mensagem

else {

echo "O arquivo $arquivo não existe";

}

Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal consegui com que ele jogue as informações certas na devida posição, porém ele está apagando todo o conteúdo e deichando apenas os valores que foram alterados, como faço para ele manter o restante das informações do txt mudando apenas as linhas que devem ser alteradas? segue abaixo o script

<?php

$arquivo = "Conversao_09032009_0758.txt";

//Verifica se o arquivo existe

if (file_exists($arquivo)) {

$fp = fopen($arquivo,"r+");

$f_contents = file ($arquivo);

//Se o arquivo tiver algum conteúdo

if ($f_contents == TRUE){

foreach ($f_contents as $linha) {

$novo = substr($linha,0,48);

$pega_conteudo = substr($novo,0,42);

$corta = substr($linha,42,1);

$cond1 = substr($linha,38,1);

$cond2 = substr($linha,39,1);

if ($cond1=="9" and $cond2=="1"){

$alt = $pega_conteudo."SMT ";

}

if ($cond1=="9" and $cond2=="2"){

$alt = $pega_conteudo."SBC ";

}

if ($cond1=="9" and $cond2=="3"){

$alt = $pega_conteudo."PIR ";

}

if ($cond1=="9" and $cond2=="4"){

$alt = $pega_conteudo."DID ";

}

if ($cond1=="9" and $cond2=="5"){

$alt = $pega_conteudo."JAQ ";

}

if ($cond1=="9" and $cond2=="6"){

$alt = $pega_conteudo."STO ";

}

if ($cond1=="9" and $cond2=="7"){

$alt = $pega_conteudo."STL ";

}

if ($corta == " "){

preg_match($novo, $linha);

$string .= str_replace($novo, $alt, $linha);

// move o ponteiro para o inicio pois o ftruncate() não fara isso

rewind($fp);

// truca o arquivo apagando tudo dentro dele

ftruncate($fp, 0);

// reescreve o conteudo dentro do arquivo

if (!fwrite($fp, $string)) die('Não foi possível atualizar o arquivo.');

echo "Arquivo atualizado com sucesso<br>";

}else{

echo "<b>Existe conteúdo no caractere 44!</b><br>";

}

}

fclose($fp);

}//Se não tiver nenhum conteúdo no arquivo mostra a mensagem

else{

echo "O arquivo $arquivo não tem nenhum conteúdo!";

}

}//Se não existir o arquivo mostra a mensagem

else {

echo "O arquivo $arquivo não existe";

}

?>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...