Para leer un archivo .txt línea a línea en PHP vamos a utilizar la función fgets(). Por ejemplo si queremos leer línea por línea el archivo 1.txt que se encuentra ubicado en la misma carpeta que el archivo .php, tenemos que escribir en el archivo PHP:
<?php $file = fopen("1.txt", "r") or exit("Unable to open file!"); //Output a line of the file until the end is reached while(!feof($file)) { echo fgets($file). "<br />"; } fclose($file); ?>
Hola, estoy iniciandome en PHP.
Tengo una consulta, debo importar un txt con muchos registros a mysql.
El problema es q el txt viene de la siguiente manera:
6999INSSJyP-PAMI INSULINAS CUBIERTAS 0000T20180518C0000341COLEGIO DE CORDOBA COFA 90320705100007473ECOFARMA AOT0003ADEM 0015SUIZO ARGENTINA S.A. 000002132074+0000001824867223/05/2018ENTIDAD FARMACEUTICA
6999INSSJyP-PAMI INSULINAS CUBIERTAS 0000T20180518C0000341COLEGIO DE CORDOBA COFA 90302057000004588DOMENINO AOT0003ADEM 0243DROGUERIA DEL SUD-SUCURSAL COR000002129010+0000000170209223/05/2018ENTIDAD FARMACEUTICA
Mi consulta es, como hago para separar los registros ? ya que vienen todos juntos ?
lo solucionaste ?
escribime a eduardoservin@hotmail.com y te ayudo si no lo solucionaste.
Gracias por el aporte Eduardo.
Un saludo, Víctor
hola consulta sobre como buscar un id y luego imprimir la info correspondiente a ese id. Considerando que son 45 lineas de datos por id, entonces el id esta en la fila 7, de ahi hacia arriba imprimir 7 lineas, y hacia abajo 35 lineas.
Ayuda!!! estoy creando un archivo de texto pero guando le guardo este carácter me lo cambia alguien sabe por que ?
este es el carácter : ¬
y me lo escribe así ¬
el código q tengo es así : fputs($file,»¬»);
Hola Jose Luis, muchas gracias por participar. Lo publico y espero que te podamos ayudar entre todos.
Un saludo, Víctor
Hola qué pasa si eso lo hago 10 veces con el mismo archivo?
Hola Cosi, muchas gracias por participar, lo subo aquí y espero que te ayudemos entre todos.
Un saludo, Víctor
mmm… no le entiendo muy bien.
Hola muy buenas noches, ante todo te felicito por tu dedicación a impartir el conocimiento y mas de esta web, mira tengo una duda y me gustaría que me apoyase a deducirla, tengo una pagina web ya creada solo somos dos usuarios moderado y usuario común ok entonces yo como moderador, como aplico si con php o JavaScript , subir automáticamente un archivo txt a mi pagina web y mostrar el resultado ejemplo:
me loggeo
user
pas
valida mi usuario y me redirige a mi pagina de moderador vale aquí todo genial ahora justamente cuando aparezca mi pagina en x lugar mmm no se el nombre de mi pc
ese archivo lo tome de mi disco duro no se digamos que la ruta sea c:/joseph/mipc.txt ese archivo solo contendrá una línea de máximo 7 letras máximo y que aparezca en mi pagina web gracias espero haberme explicado
Hola Victor,
Se puede leer un txt o cvs con miles de registros lineales y crear un nuevo txt tabulado de otra forma.
El archivo origina contiene:
A; 0; 001; 12;
A; 0; 002; 14;
A; 0; 003; 2;
Y necesito quede:
A;0;
001;12;
002;14;
003;2;
Se puede???
Hola Jorge, muchas gracias por contactarnos. Realmente quieres quitar los 2 primeros caracteres que hay en todas las líneas (A;0;) y dejarlos en la primera línea, ¿sería así?. Una duda es si los 2 primeros caracteres cambian o siempre son los mismos.
Saludos!
Buenas tardes, Tengo una duda estoy desarrollando un formulario de login quiero que valide buscando los usuario en un txt osea quiero que los usuarios y contraseñas esten contenidos dentro de un txt y cuando valide los busque en el txt ¿que funcion puedo utilizar?
usuario.tx
Login: juancho clave: 2233
y en el php llame al archivo usario.txt lo lea y valile si se encuentra registrado si es asi que pase a la siguiente pagina.
lo quiero de esa manera para ir agregando al txt usuario
En que me puedes ayudar
Hola Eduard, muchas gracias por contactar y lo publico. Espero que entre todos te podamos ayudar.
Un saludo, Víctor
necesito hacer un buscador en php ingresando usuario y que jale todos sus datos antes habiendo sido guardado en un txt. Estoy que busco ayuda como loco
Hola Sergio, gracias por participar. Lo publico aquí y espero que entre todos te podamos ayudar.
Saludos!
dado un txt (fichero plano) que lo importe a excel desde php ¿se puede? Muchas gracias por la ayuda.
Hola Richard, gracias por participar en la web. Creo que quieres leer un archivo excel desde php. He visto que se utilizan librerías como la PHPExcel para poder leer las celdas de un archivo xls. No se si alguien te podrá informar con más detalle.
Saludos, Víctor
Hola amigos yo necesito, o un script que me borre las ultimas 5 lines de un archivo txt o cvs, o uno que lo corte en partes mas chicas. uso el siguiente codigo para dividir pero parece que no sabe bien el final de la linea y se estropean los archivo que genera. talvez sea cosa de el fget, si lo divido en windows tambien se altera los archivos que genera y no sale bien.
para lo de borrar la ultima linea estoy trabajando pero no he logrado nada, abajo el codigo del split de csv.
<?php
/**
* Split a CSV file
*
* Each row is its own line.
* Each cell is comma-separated
* This file splits it into piece of size $size, add the header row
* and names the resulting file filename_X.csv where filename is the
* name of the original file and X is an incrementing integer.
*/
// Editable Options
$size = 20000; // about 20kb
$to_read = 'populate.csv';
// Do not edit
$done = false;
$part = 0;
if (($handle = fopen($to_read, "r")) !== FALSE) {
$header = fgets($handle);
while ($done == false) {
$locA = ftell($handle); // gets the current location. START
fseek($handle, $size, SEEK_CUR); // jump the length of $size from current position
$tmp = fgets($handle); // read to the end of line. We want full lines solo mide 1k se agragara mas
$locB = ftell($handle); // gets the current location. END
$span = ($locB – $locA);
fseek($handle, $locA, SEEK_SET); // jump to the START of this chunk
$chunk = fread($handle,$span); // read the chunk between START and END
file_put_contents($to_read.'_'.$part.'.csv',$header.$chunk);
$part++;
if (strlen($chunk)
Hola Alexis, gracias por participar. Vamos a ver cómo te podemos ayudar. Saludos!
Estimado Victor, primero agradecer la labor que estas desarrollando (es una grandioso aporte para quienes tenemos dudas o somos autodidactas). Hasta ahora solo te había leído, pero ahora necesito apelar a tu sabiduría directamente. Te comento que estoy trabajando en un sitio web para una amiga que no tiene ni idea de informática, es una web de servicios rubro sicología, el tema es que nos basamos en una plantilla de pago y he andado bastante bien con la adaptación hasta que me pidió la tarea de ver la forma de ayudarla a que ella misma pudiera modificar los contenidos de al menos una de las paginas. Gracias a lo que he aprendido en tu web y otros sitios, he visto como a través de php podría lograr este cometido, entregando a ella solo la tarea de subir un txt predefinido a la raíz del servidor, hasta ahí tola la teoría funciona de pelos, pero la implementación me tiene de cabeza. He creado un archivo txt para usar en la pestaña publicaciones de este sitio que tengo actualmente en modo localhost y he agregado el siguiente código a la web para que lo muestre:
<?php
$gestor = @fopen("c:\appserv\www\besthuman\publicacion1.txt", "r");
if ($gestor) {
while (($búfer = fgets($gestor, 4096)) !== false) {
echo "». $búfer;
}
if (!feof($gestor)) {
echo «Error: fallo inesperado de fgets()\n»;
}
fclose($gestor);
}
?>
El tema es que sin dar ningún tipo de error, el texto no aparece por ningún lado (la web aparece sin texto) y no sé lo que pueda estar sucediendo.
El tema es que si este mismo código lo inserto en un txt y lo renombro a .php y lo ejecuto: Eureka= es mostrado sin ningún problema.
Agradeceré alguna sugerencia o ayudita.
Hola Hector, perdona la demora en responderte. Aunque necesitaría ver el ejemplo suena a que algo falla en el index de tu aplicación, quizás es un fallo como tenerlo en html y no haberlo grabado con .php, que aunque parezca un fallo tonto puede suceder. Por otra parte, aunque está muy bien aprender desde cero como todos hemos hecho hace 7 años, yo recomendaría utilizar un WordPress e ir tocando la plantilla desde el mismo gestor o desde fuera. Lo bueno de WordPress (Drupal es muy complicado para empezar) que se puede hacer una web más o menos completa casi sin programar y puedes gestionar muy bien tus publicaciones. Cualquier cosa coméntame. Un saludo, Víctor
Amigo excelente articulo. Pero necesito una ayuda extra, una vez que leo el contenido del archivo que es un txt como puedo recorrer el texto para tratar la información en variables por ejemplo que cuando encuentre un espacio en la primera linea me almacene todo lo que encontró hasta el espacio en una variable y asi sucesivamente..
Agradezco cualquier colaboración
Para lo que quieres hacer puedes usar lo que se describe en el siguiente artículo, yo lo he probado para parsear IMDB y va de cine (nunca mejor dicho)
http://wordpresstutoriales.com/extraer-texto-entre-delimitadores-dentro-de-un-string/
Buen artículo, me salvo la vida. Gracias
Gracias a ti por participar. Saludos!
Hola Victor,
Es muy de agradecer que haya gente como tú que comparte conocimientos.
Yo tambien soy autodidacta.
Tengo una duda que no he posido encontrar aun.
Cual es la velocidad de lectura para archivos desde PHP.
Sabes si es mas rapido o mas lento que el acceso a una Base de datos.
La cuestion es que no logro usar una especie de variable GLOBAL.
Y creo que lo unico que puedo hacer es grabar el dato en un archivo, pero no se si es lo apropiado.
Muchas gracias,
Un cordial saludo.
Francisco.
http://www.marbeweb.com
Hola Francisco, gracias por participar en la web. La verdad no lo se a ciencia cierta. Supongo que depende cómo esté organizada la base de datos o el archivo y cuantos datos se precisen. Yo he hecho consultas a XML y JSON con Javascript y otras veces PHP y va muy bien, igual que a base de datos. Debe de existir una cantidad de datos a partir de la cual se empieza a notar el tiempo que tarda. De todas formas manejando algo normal no deberías notar diferencias, pero si te dedicas a la bioinformática, minería de datos, seguros, etc si será importante.
Creo que no te he sido de gran ayuda. Quizás alguien nos pueda ayudar en este tema.
Un saludo, Víctor
Gracias por compartir el código. Saludos!
Hola Alan, gracias a ti. Me alegra que el código te haya sido útil. Un saludo, Víctor
Muchas gracias, tu aporte es muy claro y sencillo; por eso nos sirve a los principienates.
Muchas gracias a ti Carlos por participar. Me alegra que te haya sido útil.
Un saludo, Víctor
Necesito de su ayuda.
Estoy aprediendo recién PHP, necesito leer un archivo .csv de 3000 registro, en donde debo separarlo cada 200 registro generando la paginación a un archivo html con sus correspondiente encabezado y pie de pagina.
He logrado hacer lo siguiente
$pag=1;
$fp = fopen ( «archivo.csv» , «r» ); // Lee el archivo
if ($encabezado== 0) {
echo $html; //imprime encabezado
$encabezado++;
$fila=0;
while (( $data = fgetcsv ( $fp , 1000, «;» )) !== false ) { // Mientras hay líneas que leer…
if ($fila <= 200) {
$i = 0; // control fila
echo "»;
foreach($data as $row) {
echo «» .utf8_encode($row).»»; // Muestra todos los campos de la fila actual
$i++ ;
}
echo «»;
$fila++;
} else {
$pag++;
echo «»;
echo $html; //imprime encabezado
echo «cambiar de pagina $pag»;
$fila=0;
}
} //while
} //if h
echo «»;
fclose ( $fp );
?>
Pero aun me falta mucho, ya que en el ejemplo solo imprime todo en la pagina.
Falta la paginacion creado los archivos hrml.
Espero que se entienda,
Gracias
Saludos cordiales,
Buenas colega, tengo una duda y es que no lo he podido realizar, al leer un txt donde almaceno comentarios estos se almacenan con fecha y hora y al momento de que los lea el php para postrarlo quiero que se muestre primero el mas reciente y al final el mas antiguo pero lo que hace es mostrarme el mas antiguo. Espero haberme explicado bien.
PD: perdona las faltas de ortografia.
Hola Erik, gracias por participar en el foro. Para poder ayudarte mejor podrías copiar unas líneas que como están los comentarios con la fecha y hora, ya que depende de si están al principio o al final se puede hacer de una forma u otra. Por ejemplo si estuviera así:
21-05-2014 | Este es el comentario número 1
Si fuera así sería más fácil ya que podríamos decir que los primeros elementos son los de la fecha, convertirlos en una variable y filtrar por ahí.
Un saludo, Víctor
Hola, me preguntaba como podria hacer para obtener una linea de un archivo como en este tutorial pero aleatoria y solo una?
Gracias!
Hola Ricardo, gracias por participar en la web. He creado un nuevo artículo para que veas ese ejemplo en concreto:Cómo leer en un archivo txt una línea al azar o aleatoria con php utilizando rand y count. Para obtener una línea al azar se hace de una forma más sencilla que en este ejemplo ya que se cuenta las líneas y se escoge una al azar.
Un saludo, Víctor
Estimado. necesito crear un archivo .txt que contenga una url que la lea desde una página php.
la idea es ir cambiando la url en el txt y no en las páginas.
saludos
Hola Roberto, antes de nada gracias por participar en el blog. No se si he entendido bien la cuestión. Tienes una página php que lee una url de otra página (¿o es de esa misma página php?) y se graba esa url en un txt, ¿sería así?. Pero si no es mucha curiosidad no entiendo bien la finalidad, ¿podrías poner un ejemplo práctico del tipo archivo1.php, archivo1.txt, url de archivo1.php para verlo con un ejemplo claro?. Con un ejemplo más definido te podremos ayudar a resolver esa cuestión.
Perdona ya que no estoy demasiado clarividente hoy, pero hay cosas que tengo algunas dudas a qué te refieres exactamente.
Un saludo, Víctor
Estimado Victor.
Tengo como 10 paginas php con un codigo que debo cambiar 1 vez por mes:
</td
lo unico que cambio es el mes, en este caso cambio enero2014, por febrero2014.
esto, editando como 10 paginas.
por eso consulto si puedo crear un archivo .txt para modificar el mes y que se modifique en todas las paginas php.
Espero no molestarte con esta consulta.
gracias desde ya y muy informativo tu blog..
Hola Roberto, quizás sea más sencillo con Javascript, puedes poner un código que cambie automáticamente cuando estes en otro mes y otro año, te pongo el código aquí para que en este mes salga febrero2014 (si quieres febrero en mayúscula lo pones en mayúscula en el array y tienes que poner las etiquetas de script antes y después del código):
var meses = new Array («enero»,»febrero»,»marzo»,»abril»,»mayo»,»junio»,»julio»,»agosto»,»septiembre»,»octubre»,»noviembre»,»diciembre»);
var f=new Date();
document.write(meses[f.getMonth()] + f.getFullYear());
Un saludo, Víctor
Hola buen dia. Ante nada perdon por la molestia, pero antes de ponerme a tratar de obtener lo que deseo, queria consultar si es posible.
Tengo un txt con muchos datos, y un total de caso 3Millines de registros.
Por otro lado un excel, en donde me piden una extraccion de 160000 personas, utilizando como campo para cruzar el numero de CUIt.
Es posible programar algo para que busque cada N! cuit en el txt y me vaya copiando toda esa linea en un txt nuevo?
Desde ya muchas gracias.
Atte.-
Martin.-
Hola Martín, gracias por participar en la web. Estoy viendo el problema pero lo veo poco detallado, ¿me puedes especificar más el problema?. Si quieres mándame los archivos (o un modelo de ellos) a mi correo: victor@biolucas.com
Espero poder ayudarte o si no ponerlo en la web por si alguien lo puede resolver.
Un saludo, Víctor
$tipo = $_FILES[‘archivo’][‘type’];
$tamanio = $_FILES[‘archivo’][‘size’];
$archivotmp = $_FILES[‘archivo’][‘tmp_name’];
$respuesta = new stdClass();
if( $tipo == ‘text/plain’){
$archivo = «Bibliotecas/Documentos/inventario.txt»;
if(move_uploaded_file($archivotmp, $archivo) ){
$respuesta->estado = true;
} else {
$respuesta->estado = false;
$respuesta->mensaje = «El archivo no se pudo subir al servidor, intentalo mas tarde»;
}
if($respuesta->estado){
$lineas = file(‘Bibliotecas/Documentos/inventario.txt’);
$respuesta->mensaje = «»;
$respuesta->estado = true;
$conexion = new mysqli(‘localhost’,’root’,’srg1887′,’cambalache’,3306);
foreach ($lineas as $linea_num => $linea)
{
$datos = explode(«,»,$linea);
$stockid = trim($datos[0]);
$qty = trim($datos[1]);
$loc=$_POST[‘Location’];
//$materno = trim($datos[2]);
//$nombre = trim($datos[3]);
$consulta = «INSERT INTO stockcounts(stockid,loccode,qtycounted) VALUES(‘$stockid’,’$loc,’$qty»);»;
if(!$conexion->query($consulta)){
$respuesta->estado = false;
$respuesta->mensaje .= «No se guardo, verifica la información \n»;
}
}
}
if($respuesta->estado == true)
$respuesta->mensaje = «Todos los registros se guardaron correctamente\n»;
}
else {
$respuesta->mensaje = «Solo se admiten archivos .txt, vuelvelo a intentar\n»; //<- AQUI
}
echo json_encode($respuesta);
ME PODRIAS DECIR PORQUE NO ENTRA AL IF, SE SALTA AL ELSE
Hola Shad, no lo he podido analizar en profundidad, veo que has adaptado el código de aquí: http://www.codedrinks.com/importar-archivo-a-servidor-y-guardar-la-informacion-en-una-base-de-datos-mysql-con-php-y-jquery/ por lo que debería funcionar. Si quieres mándame todos tus archivos a: victor@biolucas.com porque así puedo ver directamente el foco del problema, y te respondo con mayor rapidez.
Saludos!
Vaya, que mala suerte tío, o sea que descubriste tarde que la agronomía no era lo tuyo, mejor hubieras estudiado Desarrollo web, Desarrollo de Software o Ingenería de Sistemas
Hola Eduardo, gracias por escribir en el blog. Nada de mala suerte, la verdad que me gustó mucho estudiar Agrónomos, lo que más me gusto fue Botánica y Entomología (quizás debí estudiar biologia ;D), pero fui aprendiendo de manera autodidacta a diseñar y programar páginas web y me fue gustando. Además me gusta la parte de buscarse los clientes y hacer todo el proceso, desde captar al cliente, la toma de requisitos, el feedback por como va quedando y entregar la web y su mantenimiento. Creo que para esta profesión no se necesita estudiar una carrera, además hay que aprender todos los días (o casí todos) de manera autodidacta leyendo blogs, tutoriales, videotutoriales, libros, por lo que pienso que es más importante saber buscar la información que aprenderse unos libros de 1000 páginas, aunque es verdad que tener una base informática debe ayudar bastante, pero al final es como todo, con los años de práctica se suple la falta de base teórica.
excelente aporte, funciona con una gran gama de archivos.
hola buen dia..
consulta estoy empezando con php…
tengo un txt de esta forma..
3101525303 3-101-525309 SOCIEDAD ANONIMA 250
3101544874 3-101-544834 SOCIEDAD ANONIMA 0
3101545242 3-101-545262 SOCIEDAD ANONIMA 33932.75
3101566685 3-101-566285 S.A 64454.9
necesito buscar por numero de cedula luego que me desplegue la cedula el nombre del contribuyente y el monto adeudado,, por favor podrias ayudarme
gracias saludosss
Hola,
como hacer para que despues que un archivo .txt llegue a un limite de lineas se cree un archivo nuevo
Hola Musiqueate, gracias por contactar conmigo. No se si he entendido bien tu duda, voy a poner un ejemplo para ver si es la cuestión que planteas:
– Tienes un txt original con 20 líneas, y quiere que, por ejemplo, cada 9 líneas leidas se cree un archivo nuevo, con lo que tendríamos: el archivo original (con 20 líneas), el segundo txt con 9 líneas (de la 10 a la 18 línea) y un último archivo txt con 2 líneas (la línea 19 y 20). ¿Sería así el modelo que planteas?.
Saludos
¡Excelente!
claro y sencillo.
¡Felicitaciones!