Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Riki_89D en 8 Diciembre 2010, 11:23 am



Título: Modificar linea en archivo de texto
Publicado por: Riki_89D en 8 Diciembre 2010, 11:23 am
Hola expertos!!

miren,intento borra una linea de un archivos,el caso es que me la borra,pero quiero que despues me esscriba una cosa en ese mimsa linea y eso ya no me lo hace.
Código
  1. $fname = "Categorias.html";
  2. $lines = file($fname);
  3. $out = '
  4. <!--Cat--> <input type="Submit" name="Boton" value="Categoria" style="float:left; margin-left: 6px; margin-top: 10px; width: 120px; height: 25px; border:none; color:white; cursor:pointer; background:url(BS1.png);">';
  5.  
  6. foreach($lines as $line) if(!strstr($line, "<!--Cat-->")) @$out .= $line;
  7. $f = fopen($fname, "w");
  8. fwrite($f, $out);
  9. fclose($f);
  10.  

la linea a borrar se identifica por el " <!--Cat--> " ,el caso es que me la borra,pero despues lo que quieor que me escriba ($out) me lo escribe pero al principio del archivo,necesito que me lo escrba en donde borro la linea (que es dentro de un form en verdad)


alguna idea?¿



saludos y mil gracias por todo


Título: Re: Modificar linea en archivo de texto
Publicado por: xassiz~ en 8 Diciembre 2010, 11:36 am
Deja una marca o algo en esa linea, y luego le haces un replace


Título: Re: Modificar linea en archivo de texto
Publicado por: Riki_89D en 8 Diciembre 2010, 14:47 pm
Podrias ponerme como seria el codigo si no es mucho pedir porfavor?¿ :S


gracias


Título: Re: Modificar linea en archivo de texto
Publicado por: cassiani en 8 Diciembre 2010, 16:25 pm
Riki_89D el problema es que estas asignando un valor inicial a la cadena $out, luego de eso dentro del for asignas el contenido del archivo sin la linea que quieres eliminar, por eso te sale la línea esa al inicio del archivo y te borra la otra.

Para solucionarlo debes usar una variable diferente y asignarla en la condición que usas dentro del bucle, por ejemplo algo así:

Código:
$fname = "Categorias.html";
$lines = file($fname);
$sCadena = '<!--Cat--> <input type="submit" name="Boton" value="Categoria" style="float:left; margin-left: 6px; margin-top: 10px;
width: 120px; height: 25px; border:none; color:white; cursor:pointer; background:url(BS1.png);" />';

foreach($lines as $line)
{
   if(!strstr($line, "<!--Cat-->"))
      $out .= $line;
   else
      $out .= $sCadena;
}

ó
Código:
foreach($lines as $line)
$out .= !strstr($line, "<!--Cat-->") ? $line : $sCadena;

Después ya puedes almacenar los datos en el archivo.


Título: Re: Modificar linea en archivo de texto
Publicado por: Riki_89D en 8 Diciembre 2010, 17:11 pm
Hola,ya intente adaptarlo todo pero no hace nada mas que borrame el contenido del archvo :S
Código
  1.  
  2. $fname = "Categorias.html";
  3. $lines = file($fname);
  4. $out = '<!--Cat--> <input type="submit" name="Boton" value="Categoria" style="float:left; margin-left: 6px; margin-top: 10px;
  5. width: 120px; height: 25px; border:none; color:white; cursor:pointer; background:url(BS1.png);" />';
  6.  
  7. foreach($lines as $line)
  8. {
  9.   if(!strstr($line, "<!--Cat-->"))
  10.      $out .= $line;
  11.   else
  12.      $out .= $out;
  13. }
  14.  
  15.  
  16. fopen($fname,"w");
  17. fwrite($fname,$out);
  18. fclose($fname);
  19.  


que hay de mal ai?¿