Foros del Web » Programando para Internet » PHP »

poner puntero al final si abres con r+

Estas en el tema de poner puntero al final si abres con r+ en el foro de PHP en Foros del Web. Hola a todos, para un sistema de comentarios que estoy creando y que usa un archivo *.txt en donde hay un array, necesito usar el ...
  #1 (permalink)  
Antiguo 25/09/2010, 08:26
3nr1c
Invitado
 
Mensajes: n/a
Puntos:
Pregunta poner puntero al final si abres con r+

Hola a todos, para un sistema de comentarios que estoy creando y que usa un archivo *.txt en donde hay un array, necesito usar el modo de escritura r+, pero este modo pone el puntero al principio.

Cómo puedo hacer para poner el puntero al final y luego retroceder dos caracteres?
  #2 (permalink)  
Antiguo 25/09/2010, 09:17
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: poner puntero al final si abres con r+

Trata con a+.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 25/09/2010, 09:18
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 21 años, 1 mes
Puntos: 24
Respuesta: poner puntero al final si abres con r+

Necesitás retroceder dos caracteres para insertar el texto antes de "?>" ?. Si es por eso te digo que no hacen falta, el interprete de PHP no los necesita, no los pongas. Para abrirlo con el puntero al final es a+
  #4 (permalink)  
Antiguo 25/09/2010, 09:29
3nr1c
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: poner puntero al final si abres con r+

No, lisandro, no es para poner ?>. Es porque tengo, en el sistema de comentarios, un include a un archivo *.txt que tiene esta forma:

Código:
<?php return array();
Y cada vez que el formulario se procesa, se crea un elemento de este array(con esta forma:
Código:
numero => $usuario$mensaje$fecha,
y debo ponerlo entre array( y );

Por eso necesito ir al final y luego retroceder y por eso no me sirve a+; porque va al final y no permite mover el puntero. Y w+ tampoco, porque reemplaza el texto existente.
  #5 (permalink)  
Antiguo 25/09/2010, 09:49
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 21 años, 1 mes
Puntos: 24
Respuesta: poner puntero al final si abres con r+

Si no me equivoco podés mover el puntero con la función fseek(), poniendo al puntero al final y -2 en offset.
  #6 (permalink)  
Antiguo 25/09/2010, 10:00
3nr1c
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: poner puntero al final si abres con r+

No, lo intenté y no me deja. El modo 'a+' fija el puntero, escribiendo siempre al final.

Lo que yo necesitaría sería poder mover el puntero al final, habiendo usado 'r+'.
  #7 (permalink)  
Antiguo 25/09/2010, 10:02
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: poner puntero al final si abres con r+

Como te indicaron, con fseek.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 25/09/2010, 10:04
3nr1c
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: poner puntero al final si abres con r+

Vale, pero que valor le pongo? 99999999999999999?
  #9 (permalink)  
Antiguo 25/09/2010, 10:32
3nr1c
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: poner puntero al final si abres con r+

EDIT: al final lo he resuelto poniendo:

Código PHP:
<?php $datos $num.' => '.$user.' escribió el '.$fecha.':<br>'.$mensaje;

$id fopen($archivo'r+');
$leer fgets($id);
$car strlen($leer);
fseek($id,$car);
fseek($id,-2,SEEK_END);
fwrite($idvar_export($datosTRUE) . ',);');

Última edición por 3nr1c; 25/09/2010 a las 10:44
  #10 (permalink)  
Antiguo 25/09/2010, 11:54
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 21 años, 1 mes
Puntos: 24
Respuesta: poner puntero al final si abres con r+

De esta forma no te funciona ?
Código PHP:
Ver original
  1. $id = fopen('archivo.txt', 'r+');
  2.         $leer = fgets($id);
  3.         fseek($id,-2,SEEK_END);
  #11 (permalink)  
Antiguo 25/09/2010, 12:02
3nr1c
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: poner puntero al final si abres con r+

Sí, y también así (simplificando al máximo):

Código PHP:
<?php
$id 
fopen($archivo'r+');
fgets($id);
fseek($id,-2,SEEK_END);
  #12 (permalink)  
Antiguo 25/09/2010, 12:12
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 21 años, 1 mes
Puntos: 24
Respuesta: poner puntero al final si abres con r+

De todas formas me parece que hay maneras mas sencillas de hacerlo. Podés guardar un array() en un archivo usando la función serialize() antes y unserialize() cuando necesites leerlo.

Con la funcion file_get_contents() lees el archivo, de aplicas unserialize() y con eso tienes tu array en php al que le puedes agregar un item al final con array_push().

Lo dejo como alternativa

Etiquetas: final, poner, puntero
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:44.