Modificar linea en archivo de texto

Iniciado por Riki_89D, 8 Diciembre 2010, 11:23 AM

0 Miembros y 1 Visitante están viendo este tema.

Riki_89D

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 (php) [Seleccionar]

$fname = "Categorias.html";
$lines = file($fname);
$out = '
<!--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;
$f = fopen($fname, "w");
fwrite($f, $out);
fclose($f);


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

xassiz~

Deja una marca o algo en esa linea, y luego le haces un replace

Riki_89D

Podrias ponerme como seria el codigo si no es mucho pedir porfavor?¿ :S


gracias

cassiani

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í:

$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;
}


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


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

Riki_89D

Hola,ya intente adaptarlo todo pero no hace nada mas que borrame el contenido del archvo :S
Código (php) [Seleccionar]


$fname = "Categorias.html";
$lines = file($fname);
$out = '<!--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 .= $out;
}


fopen($fname,"w");
fwrite($fname,$out);
fclose($fname);



que hay de mal ai?¿