MANUAL DE PHP

(y algo mas)windsurf pozo izquierdo
Google
search for in the  
ELMARRAJO.COM mysql bulma desarrollo web linux fedora html ayuda

windsurf mercedes camper

file

(PHP 3, PHP 4, PHP 5)

file -- Lee un archivo entero hacia una matriz

Descripción

array file ( string nombre_archivo [, int usar_ruta_inclusion [, resource contexto]] )

Función idéntica a file_get_contents(), excepto que file() devuelve el archivo en una matriz. Cada elemento de la matriz corresponde a una línea en el archivo, con el salto de línea aun incluido. Si ocurre un fallo, file() devuelve FALSE.

Es posible usar el parámetro opcional usar_ruta_inclusion, y definirlo como "1", si desea buscar por el archivo en include_path, también.

<?php
// Obtiene un archivo en una matriz. En este ejemplo usaremos HTTP
// para obtener el codigo fuente HTML de una URL.

$lineas = file('http://www.example.com/');

// Recorrer nuestra matriz, mostrar el codigo HTML como codigo fuente
// HTML, y los numeros de linea tambien.
foreach ($lineas as $linea_num => $linea) {
   echo
"L&iacute;nea #<b>{$linea_num}</b> : " . htmlspecialchars($linea) . "<br />\n";
}

// Otro ejemplo, obtengames una pagina web como una cadena. Vea
// tambien file_get_contents().
$html = implode('', file('http://www.example.com/'));
?>

Sugerencia: Puede usar una URL como nombre de archivo con esta función si los fopen wrappers han sido activados. Consulte fopen() para más detalles sobre cómo especificar el nombre de fichero y Apéndice M una lista de protocolos URL soportados

Nota: Cada línea en la matriz resultante incluye el final de línea, así que aun necesita usar rtrim() si no quiere conservar el final de línea.

Nota: Si sufre problemas con PHP no reconociendo los finales de línea cuando lee archivos creados en un Macintosh (o leyendo archivos sobre uno), puede probar activando la opción de configuración auto_detect_line_endings.

Nota: A partir de PHP 4.3.0, puede usar file_get_contents() para devolver el contenido de un archivo como una cadena.

En PHP 4.3.0 file(), se volvió una función segura con material binario.

Nota: Soporte de contexto fue introducido con PHP.5.0.0.

Aviso

Cuando se usa SSL, Microsoft IIS violara el protocolo, cerrando la conexion sin mandar un indicador close_notify. PHP avisara de esto con este mensaje "SSL: Fatal Protocol Error", cuando llegue al final de los datos. Una solucion a este problema es bajar el nivel de aviso de errores del sistema para que no incluya advertencias. PHP 4.3.7 y versiones posteriores detectan servidores IIS con este problema y suprime la advertencia. Si usais la funcion fsockopen() para crear un socket ssl://, tendreis que suprimir la advertencia explicitamente.

Vea también readfile(), fopen(), fsockopen(), popen(), file_get_contents(), y include().



add a note add a note User Contributed Notes
file
richardtcunningham at gmail dot com
11-Jul-2006 02:19
justin at visunet dot ie's note of 20-Mar-2003 states
"Note: Now that file() is binary safe it is 'much' slower than it used to be. If you are planning to read large files it may be worth your while using fgets() instead of file()."

I tested fgets(), file_get_contents(), and file() on PHP 4.3.2 and PHP 5 and timed each to be under a second with over 200,000 lines. I do not know if he was testing extremely long lines or what, but I could not duplicate the difference that he mentioned.
jonathan dot gotti at free dot fr
01-Feb-2006 02:52
you can use
$file = array_map('rtrim',file('myfile.txt'));
to remove annoying ending lines of the resulting array.
Nuts
18-Jan-2006 03:16
WARNING ON WINDOWS:
file() function will add "\r\n" in to the end of the row, even if you use only "\n" char to make rows in the file!

On UNIX systems there is no such problem.
redzia
08-Feb-2005 07:55
Example usage of file to remove line containing a key string
<?

$key
= "w3ty8l";

//load file into $fc array

$fc=file("some.txt");

//open same file and use "w" to clear file

$f=fopen("some.txt","w");

//loop through array using foreach

foreach($fc as $line)
{
     if (!
strstr($line,$key)) //look for $key in each line
          
fputs($f,$line); //place $line back in file
}
fclose($f);

?>
Jason dot haymer at Haymer dot co dot uk
13-Jan-2005 08:58
Beware of using file() to call a URL from a remote server on a live Web site, as there is no way to set a maximum connection time.

To exemplify this I cite the circumstance of a Web site which receives content from a remote server in the form of an XML feed. If the remote server does not respond, the Web page will hang and if this is a regular occurance, the parts of the Web site which use the feed may often prove inaccessible to search engine robots, possibly resulting in their removal from the search engine indices.

Here is an alternative function which like file() can be used to retrieve a remote feed, but which imposes a maximum connection time, after which the page will be displayed without the feed.

<?

function fetchUrlWithoutHanging($url)
   {
  
// Set maximum number of seconds (can have floating-point) to wait for feed before displaying page without feed
  
$numberOfSeconds=4;   

  
// Suppress error reporting so Web site visitors are unaware if the feed fails
  
error_reporting(0);

  
// Extract resource path and domain from URL ready for fsockopen

  
$url = str_replace("http://","",$url);
  
$urlComponents = explode("/",$url);
  
$domain = $urlComponents[0];
  
$resourcePath = str_replace($domain,"",$url);

  
// Establish a connection
  
$socketConnection = fsockopen($domain, 80, $errno, $errstr, $numberOfSeconds);

   if (!
$socketConnection)
       {
      
// You may wish to remove the following debugging line on a live Web site
      
print("<!-- Network error: $errstr ($errno) -->");
       }   
// end if
  
else    {
      
$xml = '';
      
fputs($socketConnection, "GET /$resourcePath HTTP/1.0\r\nHost: $domain\r\n\r\n");
  
      
// Loop until end of file
      
while (!feof($socketConnection))
           {
          
$xml .= fgets($socketConnection, 128);
           }   
// end while

      
fclose ($socketConnection);

       }   
// end else

  
return($xml);

   }   
// end function

?>
andyg at stingrayboats dot com
21-Jul-2004 01:27
i tried for quite sometime to get my pdf to attach right some of you may want to try reading it as binary first then base 64 it.

//this did not work for me with a pdf file it came in garbled
$data = chunk_split(base64_encode(implode("", file($filelocation))));
//but tis seemed to make it work correctly
$data = fread($file,filesize($filelocation));
   fclose($file);
   $data = chunk_split(base64_encode($data));
kangaroo232002 at yahoo dot co dot uk
18-Jun-2004 05:03
Instead of using file() for parsing ini / conf files, as shown in mvanbeek at supporting-role dot co dot uk's example below (above?), a great function that puts all your conf info into an associative array is parse_ini_file($filename); very useful !

ian.
J at TIPPELL dot com
12-Jun-2004 07:18
heres a little script to return a random quote from a quotes file.

<?php
$textfile
= "Includes/Quotes.txt";      //quotes file
if ($quotes = @file("$textfile")) {    //don't display errors on file open
  
$quote = rand(0, sizeof($quotes)-1);
   echo
$quotes[$quote];                //echo a random quote
}else{
   echo (
"default quote");          //if quotes file wasn't found, echo out a default quote
}
?>
skipjack at skipjack dot info
12-Feb-2004 02:45
this a little function I wrote that checks if two ascii files are the same.
it opens the file then removes the spaces then coverts the crc32 to base 10 and compares the results.
function fcheck($tool)
{    if(fopen("file.01", "r") != FALSE){
   $fp1 = 'file.02';
   $fp = 'semcond.01';

   $data = implode(" ", file($fp));
   $data1 = implode(" ", file($fp1));
   $test1 = (dechex(crc32($data)));
   $test2 = (dechex(crc32($data1)));
     if($test1 == $test2)
         $sfv_checksum = 'TRUE';
           else
             $sfv_checksum = 'FALSE';
         return $sfv_checksum;
   }

}
mvanbeek at supporting-role dot co dot uk
31-Dec-2003 09:39
I needed a cross platform config file for a project using both perl and php, so I used the perl script in the Perl Cookbook, and wrote the following PHP script. This going in an include file that all the PHP files reference, so the only thing that needs to be do for set up, is to set the location of the config file.

$filename = "/opt/ssis/includes/ssis-config";
$config = file($filename);
reset ($config);
foreach ($config as $line)
     {
     if ( $line == "" ) next($config);          # Ignore blankline
     elseif ( $line == "\n" ) next($config);      # Ignore newline
     elseif ( strstr($line,"#")) next($config); # Ignore comments
     else
         {
         $line = rtrim($line);  # Get rid of newline characters
         $line = ltrim($line);  # Get rid of any leading spaces
         $value = preg_split("/\s*=\s*/", $line, 2); # split by "=" and removing blank space either side of it.
         ${Settings}["$value[0]"] = $value[1]; # Create a new array with all the values.
         }
     }

I am sure there is a neater way of doing it, but all the Config libaries floating arround seemed very complicated. All the config file needs is a series of lines ( key = value ) in plain text.
global-thenumberafterzero at nospam dot web dot de
30-Oct-2003 07:21
If you want a more powerful tool to open files you may want to use the curllib functions. If curllib is installed on your Server it is probably the best (but not fastest) tool for opening files. More information you can find here:

http://curl.haxx.se
or on php.net:
http://de.php.net/manual/de/ref.curl.php
dir @ badblue com
12-Sep-2003 02:48
Jeff's array2file function is a good start; here are a couple of improvements (no possibility of handle leak when fwrite fails, additional capability of both string2file and array2file; presumably faster performance through use of implode).

function String2File($sIn, $sFileOut) {
  $rc = false;
  do {
   if (!($f = fopen($sFileOut, "wa+"))) {
     $rc = 1; break;
   }
   if (!fwrite($f, $sIn)) {
     $rc = 2; break;
   }
   $rc = true;
  } while (0);
  if ($f) {
   fclose($f);
  }
  return ($rc);
}

function Array2File($aIn, $sFileOut) {
  return (String2File(implode("\n", $aIn), $sFileOut));
}

If you're generating your string text using a GET or POST from a TEXTAREA (e.g., a mini-web-text-editor), remember that strip_slashes and str_replace of "/r/n" to "/n" may be necessary as well using these functions.

HTH --dir @ badblue com
hhw
23-Aug-2003 08:43
The following function can handle text files whose line endings are whatever <LF> (*nix), <CR><LF> (M$) or <CR> (Mac)

function file2($filename) {
       $fp = fopen($filename, "rb");
       $buffer = fread($fp, filesize($filename));
       fclose($fp);
       $lines = preg_split("/\r?\n|\r/", $buffer);
       return $lines;
}
John
20-Jul-2003 04:32
after many months of confusion and frustration, i have finally figured out something that i should have noticed the first time around.

you can't file("test.txt") when that same file has been flocked. i guess i didn't have a full understanding of what i was doing when i used flock(). all i had to do was move the flock() around, and all was well.
webmaster AT the-afterburner DOT de
25-Mar-2003 04:35
If you want to send a URL via GET to a script and want to open this URL via file() there are problems if there is a & sign in the URL, all after die & sign is cut.

TO fix this an get it working with the & sign in the URL

@$myopenedcontent= implode("", file ("$url"));
$myopenedcontent=eregi_replace('&','{KU}',$myopenedcontent);

so all & signs are replaced by {KU}

before use the file() function you have to rereplace it, the whole code:

$url=eregi_replace('{KU}','&,$url);
@$myopenedcontent= implode("", file ("$url"));
$myopenedcontent=eregi_replace('&','{KU}',$myopenedcontent);
echo "$myopenedcontent";

hope it is helpful ;)

Bye
Afterburner
justin at visunet dot ie
20-Mar-2003 09:36
Note: Now that file() is binary safe it is 'much' slower than it used to be. If you are planning to read large files it may be worth your while using fgets() instead of file() For example:

$fd = fopen ("log_file.txt", "r");
while (!feof ($fd))
{
   $buffer = fgets($fd, 4096);
   $lines[] = $buffer;
}
fclose ($fd);

The resulting array is $lines.

I did a test on a 200,000 line file. It took seconds with fgets()  compared to minutes with file().
03-Mar-2003 02:16
You can use file with https if you go to:

http://ftp.proventum.net/pub/php/win32/misc/openssl/.

This is instead of using the php_openssl.dll, so be sure to comment this extension in your php.ini.
akaylaa at yahoo dot com
05-Dec-2002 11:01
a quick way to count the number of lines in a file is

 $lines = file ('filename');
 $num_lines = count ($lines);

echo ("Total lines in file: " . $num_lines);
e dot maccarthy at csuohio dot edu
02-Jun-2002 03:04
[[Editors note: using fopen/fgets instead of file() would be more efficient for this task as there is no need to load the entire file into memory]]

Here is a quick snippet that will read in N number of lines of a file, then print them.

$n=10
$fp = file('/path/to/your/file');
$i=0
while($i < $n){
           echo "$fp[$i]";
           $i++;
}

I am using this right now to display the current progress of the seti@home client working on my server, instead of displaying the whole thing, which isn't web page friendly.
Because sometimes short really is sweet...
andrea at brancatelli dot it
16-Mar-2002 11:16
file() has a strange behaviour when reading file with both \n and \r as line delimitator (DOS files), since it will return an array with every single line but with just a \n in the end. It seems like \r just disappears.

This is happening with PHP 4.0.4 for OS/2. Don't know about the Windows version.
php@don't_spam_me
09-Feb-2002 12:56
It appears that the file() function causes file access problems for perl cgi scripts accessing the same files.  I am using Perl v5.6.0 in linux with PHP/4.0.4pl1.  After running a php app using the file() function, any perl cgi trying to access the same file randomly dies returning an internal server error: premature end of script headers.

The simple fix is to use fopen(), fgets() and fclose() instead of file().

Citas célebres

Los rusos adoran a Brooke Shields porque sus cejas les recuerdan a Leonidas Breznev.

Robin Williams
Actor estadounidense
(n. 1952)
Citas en tu mail
©Contenidos Gratis

Ilusiones Opticas
ilusion_optica_037.jpg
Contenidos Web

Chiste de... Transportes
El buga

Un pasota montado en su "buga"

- Que arranques te he dicho!, ¡que no me vaciles! que arranques, ¡buga de pastel!. Pues sabes lo que te digo, ¡que hasta que no arranques no te echo gasolina!
Chistes en tu mail
©ContenidosGratis

Humor Gráfico
humor_grafico_032.jpg
Contenidos Web

Inicio | Acción | Estrategia | Palabras | Puzzles | Solitarios | Foro Trucos
Cake ManiaCake Mania
Jugadores: 6835
Categoría del juego: Acción
Objetivo del juego: Ayuda a Jill a recuperar la pastelería de su abuela llevando su propia pastelería; consigue clientes y gana dinero.
Rainbow WebRainbow Web
Jugadores: 2199
Categoría del juego: Puzzles
Objetivo del juego: Rompe un pegajoso hechizo y salva un reino de fantasía en Rainbow Web. Tendrás toneladas de diversión mientras juegas a este mágico desafío para la mente.
Mahjongg FortunaMahjongg Fortuna
Jugadores: 12462
Categoría del juego: Solitarios
Objetivo del juego: Velocidad y habilidad mental son las armas más importantes en esta versión de un antiguo juego asiático. Despeja el tablero lo antes posible haciendo clic en las fichas iguales y gánate la fama eterna de la puntuación más alta.
Chainz 2Chainz 2
Jugadores: 6955
Categoría del juego: Puzzles
Objetivo del juego: Entra en el mundo de las combinaciones con Chainz 2: Relinked, emocionante secuela del exitazo del año pasado, Chainz. Gira eslabones y crea combinaciones de 3 ó más.
DeliciousDelicious
Jugadores: 4405
Categoría del juego: Acción
Objetivo del juego: ¿Eres un as de la multitarea? ¿Quieres que tus clientes estén contentos? ¡Pues Delicious es tu juego! Sacia el apetito de los clientes y tenlos contentos; ¡no te arriesgues!
BookwormBookworm
Jugadores: 4568
Categoría del juego: Palabras
Objetivo del juego: Junta las letras para formar palabras. ¡Las palabras más largas valen más puntos!
ZumaZuma
Jugadores: 4976
Categoría del juego: Acción
Objetivo del juego: Controla el ídolo de la rana de piedra de los antiguos Zuma en este intrigante enigma de acción. ¡Dispara bolas para formar conjuntos de tres, pero si dejas que lleguen a la calavera dorada morirás!
Jewel of AtlantisJewel of Atlantis
Jugadores: 3798
Categoría del juego: Puzzles
Objetivo del juego: Descubre la ciudad hundida de la Atlántida y busca valiosos tesoros. Viaja más allá de las profundidades del mar y vive trepidantes aventuras en Jewel of Atlantis.
Jewel QuestJewel Quest
Jugadores: 3727
Categoría del juego: Puzzles
Objetivo del juego: Convierte la arena de la antigua selva en oro tan rápido como puedas juntando grupos de 3 elementos. ¡Los grupos más grandes valen más puntos!
Bejeweled 2Bejeweled 2
Jugadores: 3659
Categoría del juego: Puzzles
Objetivo del juego: Con cuatro modos de juego únicos y fascinantes, nuevas piezas de juego explosivas e imponentes fondos planetarios, Bejeweled 2 es mucho más adictivo que nunca.
Contenidos gratis en tu webSiguiente >>

Fotos divertidas
fotos_increibles_0143.jpg
Contenidos Web
microrobots avion deportes riesgo recetas cocina canaria juegos online gratis moto motociclismo horoscopos naranjas valencianas surf canarias montañismo ciudades turismo postales gratis library Horoscopos Diarios Windsurf Canarias
fregadero microondas placa electrica bañopreparar camper pantalla plananevera compresor electricacamper fiat ducato camper baño quimicomampara enrollable bañocamper aire climatizadofurgoneta surf windsurffurgoneta surf windsurftelevisor furgonetas camperfurgonetas camper cama

Sudoku del día
Nivel de dificultad: Fácil



Cómo jugar:
El juego consiste en colocar los números del 1 al nueve de tal forma que no se repita el mismo número en la columna, fila y caja (bloques 3x3 enmarcados).

©Contenidos Gratis | Sudoku en tu mail
Sucedió el...

30 de agosto de 1617

Fallece Santa Rosa de Lima, por la que se celebra el "Día de la Patrona de América".
Efemérides en tu mail
©Contenidos Gratis
windsurf canarias youtube porno canarias baleares valencia madrid fallera mayor campus party alcacer feria valencia fernando alonso loterias dinero inversiones violencia de genero makro empresas cartera soledad tolerancia metro valencia gobierno de españa violencia de genero UIMP navidad