Pessoal consegui fazer um script que pega determinadas linhas do txt e coloca um texto segundo suas condições. O problema é que ele só está gravando as linhas que foram alteradas, como faço para ele substituir as respectivas linhas mas manter as outras linhas que não sofreram alteração?
$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 ";
}elseif ($cond1=="9" and $cond2=="2"){
$alt = $pega_conteudo."SBC ";
}elseif ($cond1=="9" and $cond2=="3"){
$alt = $pega_conteudo."PIR ";
}elseif ($cond1=="9" and $cond2=="4"){
$alt = $pega_conteudo."DID ";
}elseif ($cond1=="9" and $cond2=="5"){
$alt = $pega_conteudo."JAQ ";
}elseif ($cond1=="9" and $cond2=="6"){
$alt = $pega_conteudo."STO ";
}elseif ($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.');
}else{
echo "Linha não atualizada <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!";
Pergunta
Luis Vagner
Pessoal consegui fazer um script que pega determinadas linhas do txt e coloca um texto segundo suas condições. O problema é que ele só está gravando as linhas que foram alteradas, como faço para ele substituir as respectivas linhas mas manter as outras linhas que não sofreram alteração?
$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 ";
}elseif ($cond1=="9" and $cond2=="2"){
$alt = $pega_conteudo."SBC ";
}elseif ($cond1=="9" and $cond2=="3"){
$alt = $pega_conteudo."PIR ";
}elseif ($cond1=="9" and $cond2=="4"){
$alt = $pega_conteudo."DID ";
}elseif ($cond1=="9" and $cond2=="5"){
$alt = $pega_conteudo."JAQ ";
}elseif ($cond1=="9" and $cond2=="6"){
$alt = $pega_conteudo."STO ";
}elseif ($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.');
}else{
echo "Linha não atualizada <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 respostass a esta questão
Posts Recomendados
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.