{"id":659,"date":"2011-08-16T18:20:50","date_gmt":"2011-08-16T18:20:50","guid":{"rendered":"https:\/\/www.jose-aguilar.com\/blog\/?p=659"},"modified":"2013-10-20T19:51:34","modified_gmt":"2013-10-20T19:51:34","slug":"tratamiento-de-archivos-con-php","status":"publish","type":"post","link":"https:\/\/www.jose-aguilar.com\/blog\/tratamiento-de-archivos-con-php\/","title":{"rendered":"Tratamiento de archivos con PHP"},"content":{"rendered":"<p>El tratamiento de archivos resulta ser una pr\u00e1ctica muy com\u00fan en cualquier sitio web. Muy a menudo nos vemos en la necesidad de procesar un texto para cambiarle el formato, buscar una cadena en su interior o cualquier otro tipo de operaci\u00f3n.<\/p>\n<p>PHP propone un sinf\u00edn de funciones para la gesti\u00f3n de archivos que van desde las m\u00e1s elementales de apertura, lectura y cierre a otras m\u00e1s rebuscadas como el c\u00e1lculo de espacio en el disco duro, tama\u00f1o del archivo, gesti\u00f3n de derechos de acceso&#8230;<\/p>\n<p>En este art\u00edculo pretendemos mostraros cu\u00e1les son las funciones m\u00e1s esenciales para el tratamiento de archivos para posteriormente ejemplificarlas en un par de scripts que os pueden resultar \u00fatiles:<\/p>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\" align=\"center\">\n<tbody>\n<tr>\n<td align=\"center\"><strong>fopen<\/strong><\/td>\n<td>Abre un archivo y le asigna un identificador id. Veremos el modo m\u00e1s adelante<\/td>\n<td>$id = Fopen($archivo, $modo)<\/td>\n<\/tr>\n<tr>\n<td align=\"center\"><strong>fgets<\/strong><\/td>\n<td>Lee una l\u00ednea de un archivo hasta un numero m\u00e1ximo de caracteres<\/td>\n<td>fgets($id,$max)<\/td>\n<\/tr>\n<tr>\n<td align=\"center\"><strong>fwrite<\/strong><\/td>\n<td>Escribe una cadena dentro del archivo<\/td>\n<td>fwrite($id, $cadena)<\/td>\n<\/tr>\n<tr>\n<td align=\"center\"><strong>fseek<\/strong><\/td>\n<td>Avanza o retrocede el puntero del archivo un cierto numero de posiciones<\/td>\n<td>fseek($id,$posiciones)<\/td>\n<\/tr>\n<tr>\n<td align=\"center\"><strong>feof<\/strong><\/td>\n<td>Comprueba si el puntero que lee el archivo ha llegado al final<\/td>\n<td>feof($id)<\/td>\n<\/tr>\n<tr>\n<td align=\"center\"><strong>fpassthru<\/strong><\/td>\n<td>lee completamente el archivo y lo muestra<\/td>\n<td>fpassthru($id)<\/td>\n<\/tr>\n<tr>\n<td align=\"center\"><strong>fclose<\/strong><\/td>\n<td>Cierra el archivo abierto previamente<\/td>\n<td>fclose($id)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Las operaciones m\u00e1s elementales, copia, borrado y cambiar el nombre, requieren \u00fanicamente el nombre (y path) del archivo sobre el cual se ejerce la operaci\u00f3n. Para operaciones m\u00e1s complejas, como la lectura de l\u00edneas o la escritura de texto dentro del archivo, se requiere de una previa apertura del archivo al cual le asignaremos un indentificador <em>$id<\/em>.<\/p>\n<p>Una vez abierto el archivo, podremos desplazarnos a lo largo de \u00e9l por medio de un puntero imaginario que avanza o retrocede por las l\u00edneas de texto y mediante el cual nos situaremos en el lugar escogido para insertar, modificar o simplemente copiar una cadena.<\/p>\n<p>Existen distintos modos de apertura que nos permiten definir las acciones que podemos realizar sobre el archivo. Aqu\u00ed os mostramos los diferentes modos que, como ver\u00e9is, son de lo m\u00e1s variado:<\/p>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\" align=\"center\">\n<tbody>\n<tr>\n<td align=\"center\"><strong>&#8216;r&#8217;<\/strong><\/td>\n<td>S\u00f3lo lectura<\/td>\n<\/tr>\n<tr>\n<td align=\"center\"><strong>&#8216;r+&#8217;<\/strong><\/td>\n<td>Lectura y escritura<\/td>\n<\/tr>\n<tr>\n<td align=\"center\"><strong>&#8216;w&#8217;<\/strong><\/td>\n<td>S\u00f3lo escritura<\/td>\n<\/tr>\n<tr>\n<td align=\"center\"><strong>&#8216;w+&#8217;<\/strong><\/td>\n<td>Lectura y escritura. Suprime el contenido anterior si se escribe. El archivo es creado si no existe.<\/td>\n<\/tr>\n<tr>\n<td align=\"center\"><strong>&#8216;a&#8217;<\/strong><\/td>\n<td>S\u00f3lo escritura. El archivo es creado si no existe y el puntero se coloca al final.<\/td>\n<\/tr>\n<tr>\n<td align=\"center\"><strong>&#8216;a+&#8217;<\/strong><\/td>\n<td>Lectura y escritura. El archivo es creado si no existe y el puntero se coloca al final.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Otras funciones m\u00e1s avanzadas pero de gran utilidad:<\/p>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\" align=\"center\">\n<tbody>\n<tr>\n<td align=\"center\"><strong>basename<\/strong><\/td>\n<td>Devuelve el componente de nombre de rastreo de la ruta.<\/td>\n<td><strong>basename<\/strong> (<tt>$path<\/tt>)<\/td>\n<\/tr>\n<tr>\n<td align=\"center\"><strong>chmod<\/strong><\/td>\n<td>Cambia el modo de archivo.<\/td>\n<td><strong>chmod<\/strong> (<tt>$filename<\/tt> , <tt>$mode<\/tt>)<\/td>\n<\/tr>\n<tr>\n<td align=\"center\"><strong>file_exists<\/strong><\/td>\n<td>Comprueba si existe un archivo o directorio.<\/td>\n<td><strong>file_exists<\/strong>(<tt>$filename<\/tt>)<\/td>\n<\/tr>\n<tr>\n<td align=\"center\"><strong>file_get_contents<\/strong><\/td>\n<td>Transmite un archivo entero a una cadena.<\/td>\n<td><strong>file_get_contents<\/strong>(<tt>$file)<\/tt><\/td>\n<\/tr>\n<tr>\n<td align=\"center\"><strong>file_put_contents<\/strong><\/td>\n<td>Escribe una cadena a un archivo.<\/td>\n<td><strong>file_put_contents<\/strong> (<tt>$file<\/tt> , <tt>$data)<\/tt><\/td>\n<\/tr>\n<tr>\n<td align=\"center\"><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td align=\"center\"><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Puedes ver m\u00e1s funciones pulsando <a href=\"http:\/\/www.php.net\/manual\/es\/ref.filesystem.php\">aqu\u00ed<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>El tratamiento de archivos resulta ser una pr\u00e1ctica muy com\u00fan en cualquier sitio web. Muy a menudo nos vemos en la necesidad de procesar un texto para cambiarle el formato, buscar una cadena en su interior o cualquier otro tipo de operaci\u00f3n. PHP propone un sinf\u00edn de funciones para la gesti\u00f3n de archivos que van [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":5280,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[103],"class_list":["post-659","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php","tag-archivos"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Tratamiento de archivos con PHP - Jose Aguilar Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tratamiento de archivos con PHP - Jose Aguilar Blog\" \/>\n<meta property=\"og:description\" content=\"El tratamiento de archivos resulta ser una pr\u00e1ctica muy com\u00fan en cualquier sitio web. Muy a menudo nos vemos en la necesidad de procesar un texto para cambiarle el formato, buscar una cadena en su interior o cualquier otro tipo de operaci\u00f3n. PHP propone un sinf\u00edn de funciones para la gesti\u00f3n de archivos que van [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jose-aguilar.com\/blog\/tratamiento-de-archivos-con-php\/\" \/>\n<meta property=\"og:site_name\" content=\"Jose Aguilar Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/joseaguilarblog\" \/>\n<meta property=\"article:published_time\" content=\"2011-08-16T18:20:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-10-20T19:51:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/11\/php2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"128\" \/>\n\t<meta property=\"og:image:height\" content=\"128\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jose Aguilar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:site\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jose Aguilar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/tratamiento-de-archivos-con-php\/\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/tratamiento-de-archivos-con-php\/\",\"name\":\"Tratamiento de archivos con PHP - Jose Aguilar Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/tratamiento-de-archivos-con-php\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/tratamiento-de-archivos-con-php\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/11\/php2.png\",\"datePublished\":\"2011-08-16T18:20:50+00:00\",\"dateModified\":\"2013-10-20T19:51:34+00:00\",\"author\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/tratamiento-de-archivos-con-php\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.jose-aguilar.com\/blog\/tratamiento-de-archivos-con-php\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/tratamiento-de-archivos-con-php\/#primaryimage\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/11\/php2.png\",\"contentUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/11\/php2.png\",\"width\":128,\"height\":128},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/tratamiento-de-archivos-con-php\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.jose-aguilar.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tratamiento de archivos con PHP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/\",\"name\":\"Jose Aguilar Blog\",\"description\":\"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\",\"name\":\"Jose Aguilar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"caption\":\"Jose Aguilar\"},\"description\":\"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.\",\"sameAs\":[\"https:\/\/plus.google.com\/114357189801512615537\"],\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tratamiento de archivos con PHP - Jose Aguilar Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"es_ES","og_type":"article","og_title":"Tratamiento de archivos con PHP - Jose Aguilar Blog","og_description":"El tratamiento de archivos resulta ser una pr\u00e1ctica muy com\u00fan en cualquier sitio web. Muy a menudo nos vemos en la necesidad de procesar un texto para cambiarle el formato, buscar una cadena en su interior o cualquier otro tipo de operaci\u00f3n. PHP propone un sinf\u00edn de funciones para la gesti\u00f3n de archivos que van [&hellip;]","og_url":"https:\/\/www.jose-aguilar.com\/blog\/tratamiento-de-archivos-con-php\/","og_site_name":"Jose Aguilar Blog","article_publisher":"https:\/\/www.facebook.com\/joseaguilarblog","article_published_time":"2011-08-16T18:20:50+00:00","article_modified_time":"2013-10-20T19:51:34+00:00","og_image":[{"width":128,"height":128,"url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/11\/php2.png","type":"image\/png"}],"author":"Jose Aguilar","twitter_card":"summary_large_image","twitter_creator":"@JoseAguilarBlog","twitter_site":"@JoseAguilarBlog","twitter_misc":{"Escrito por":"Jose Aguilar","Tiempo de lectura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.jose-aguilar.com\/blog\/tratamiento-de-archivos-con-php\/","url":"https:\/\/www.jose-aguilar.com\/blog\/tratamiento-de-archivos-con-php\/","name":"Tratamiento de archivos con PHP - Jose Aguilar Blog","isPartOf":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/tratamiento-de-archivos-con-php\/#primaryimage"},"image":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/tratamiento-de-archivos-con-php\/#primaryimage"},"thumbnailUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/11\/php2.png","datePublished":"2011-08-16T18:20:50+00:00","dateModified":"2013-10-20T19:51:34+00:00","author":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11"},"breadcrumb":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/tratamiento-de-archivos-con-php\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jose-aguilar.com\/blog\/tratamiento-de-archivos-con-php\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/tratamiento-de-archivos-con-php\/#primaryimage","url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/11\/php2.png","contentUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/11\/php2.png","width":128,"height":128},{"@type":"BreadcrumbList","@id":"https:\/\/www.jose-aguilar.com\/blog\/tratamiento-de-archivos-con-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.jose-aguilar.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tratamiento de archivos con PHP"}]},{"@type":"WebSite","@id":"https:\/\/www.jose-aguilar.com\/blog\/#website","url":"https:\/\/www.jose-aguilar.com\/blog\/","name":"Jose Aguilar Blog","description":"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11","name":"Jose Aguilar","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","caption":"Jose Aguilar"},"description":"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.","sameAs":["https:\/\/plus.google.com\/114357189801512615537"],"url":"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/"}]}},"_links":{"self":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/659","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/comments?post=659"}],"version-history":[{"count":0,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/659\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media\/5280"}],"wp:attachment":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media?parent=659"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/categories?post=659"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/tags?post=659"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}