<?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.21 $ --> <!-- splitted from ./en/functions/filesystem.xml, last change in rev 1.25 --> <refentry id="function.fread"> <refnamediv> <refname>fread</refname> <refpurpose>Binary-safe file read</refpurpose> </refnamediv> <refsect1> <title>Description</title> <methodsynopsis> <type>string</type><methodname>fread</methodname> <methodparam><type>resource</type><parameter>handle</parameter></methodparam> <methodparam><type>int</type><parameter>length</parameter></methodparam> </methodsynopsis> <simpara> <function>fread</function> reads up to <parameter>length</parameter> bytes from the file pointer referenced by <parameter>handle</parameter>. Reading stops when up to <parameter>length</parameter> bytes have been read, EOF (end of file) is reached, (for network streams) when a packet becomes available, or (after opening userspace stream) when 8192 bytes have been read whichever comes first. </simpara> <simpara> Returns the read string or &false; in case of error. </simpara> <para> <informalexample> <programlisting role="php"> <![CDATA[ <?php // get contents of a file into a string $filename = "/usr/local/something.txt"; $handle = fopen($filename, "r"); $contents = fread($handle, filesize($filename)); fclose($handle); ?> ]]> </programlisting> </informalexample> </para> <warning> <para> On systems which differentiate between binary and text files (i.e. Windows) the file must be opened with 'b' included in <function>fopen</function> mode parameter. </para> </warning> <para> <informalexample> <programlisting role="php"> <![CDATA[ <?php $filename = "c:\\files\\somepic.gif"; $handle = fopen($filename, "rb"); $contents = fread($handle, filesize($filename)); fclose($handle); ?> ]]> </programlisting> </informalexample> </para> <warning> <para> When reading from anything that is not a regular local file, such as streams returned when reading <link linkend="features.remote-files">remote files</link> or from <function>popen</function> and <function>fsockopen</function>, reading will stop after a packet is available. This means that you should collect the data together in chunks as shown in the examples below. </para> </warning> <para> <informalexample> <programlisting role="php"> <![CDATA[ <?php // For PHP 5 and up $handle = fopen("http://www.example.com/", "rb"); $contents = stream_get_contents($handle); fclose($handle); ?> ]]> </programlisting> </informalexample> </para> <para> <informalexample> <programlisting role="php"> <![CDATA[ <?php $handle = fopen("http://www.example.com/", "rb"); $contents = ''; while (!feof($handle)) { $contents .= fread($handle, 8192); } fclose($handle); ?> ]]> </programlisting> </informalexample> </para> <note> <para> If you just want to get the contents of a file into a string, use <function>file_get_contents</function> as it has much better performance than the code above. </para> </note> <simpara> See also <function>fwrite</function>, <function>fopen</function>, <function>fsockopen</function>, <function>popen</function>, <function>fgets</function>, <function>fgetss</function>, <function>fscanf</function>, <function>file</function>, and <function>fpassthru</function>. </simpara> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 -->