<?xml version="1.0" encoding="utf-8"?> <!-- $Revision$ --> <refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.file-put-contents"> <refnamediv> <refname>file_put_contents</refname> <refpurpose>Write a string to a file</refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <methodsynopsis> <type>int</type><methodname>file_put_contents</methodname> <methodparam><type>string</type><parameter>filename</parameter></methodparam> <methodparam><type>mixed</type><parameter>data</parameter></methodparam> <methodparam choice="opt"><type>int</type><parameter>flags</parameter><initializer>0</initializer></methodparam> <methodparam choice="opt"><type>resource</type><parameter>context</parameter></methodparam> </methodsynopsis> <para> This function is identical to calling <function>fopen</function>, <function>fwrite</function> and <function>fclose</function> successively to write data to a file. </para> <para> If <parameter>filename</parameter> does not exist, the file is created. Otherwise, the existing file is overwritten, unless the <constant>FILE_APPEND</constant> flag is set. </para> </refsect1> <refsect1 role="parameters"> &reftitle.parameters; <para> <variablelist> <varlistentry> <term><parameter>filename</parameter></term> <listitem> <para> Path to the file where to write the data. </para> </listitem> </varlistentry> <varlistentry> <term><parameter>data</parameter></term> <listitem> <para> The data to write. Can be either a <type>string</type>, an <type>array</type> or a <type>stream</type> resource. </para> <para> If <parameter>data</parameter> is a <type>stream</type> resource, the remaining buffer of that stream will be copied to the specified file. This is similar with using <function>stream_copy_to_stream</function>. </para> <para> You can also specify the <parameter>data</parameter> parameter as a single dimension array. This is equivalent to <literal>file_put_contents($filename, implode('', $array))</literal>. </para> </listitem> </varlistentry> <varlistentry> <term><parameter>flags</parameter></term> <listitem> <para> The value of <parameter>flags</parameter> can be any combination of the following flags, joined with the binary OR (<literal>|</literal>) operator. </para> <para> <table> <title>Available flags</title> <tgroup cols="2"> <thead> <row> <entry>Flag</entry> <entry>Description</entry> </row> </thead> <tbody> <row> <entry> <constant>FILE_USE_INCLUDE_PATH</constant> </entry> <entry> Search for <parameter>filename</parameter> in the include directory. See <link linkend="ini.include-path">include_path</link> for more information. </entry> </row> <row> <entry> <constant>FILE_APPEND</constant> </entry> <entry> If file <parameter>filename</parameter> already exists, append the data to the file instead of overwriting it. </entry> </row> <row> <entry> <constant>LOCK_EX</constant> </entry> <entry> Acquire an exclusive lock on the file while proceeding to the writing. </entry> </row> <!-- FIXME PHP_6 <row> <entry> <constant>FILE_TEXT</constant> </entry> <entry> <parameter>data</parameter> is written in text mode. If unicode semantics are enabled, the default encoding is UTF-8. You can specify a different encoding by creating a custom context or by using the <function>stream_default_encoding</function> to change the default. This flag cannot be used with <constant>FILE_BINARY</constant>. This flag is only available since PHP 6. </entry> </row> <row> <entry> <constant>FILE_BINARY</constant> </entry> <entry> <parameter>data</parameter> will be written in binary mode. This is the default setting and cannot be used with <constant>FILE_TEXT</constant>. This flag is only available since PHP 6. </entry> </row> --> </tbody> </tgroup> </table> </para> </listitem> </varlistentry> <varlistentry> <term><parameter>context</parameter></term> <listitem> <para> A valid context resource created with <function>stream_context_create</function>. </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1 role="returnvalues"> &reftitle.returnvalues; <para> This function returns the number of bytes that were written to the file, or &false; on failure. </para> &return.falseproblem; </refsect1> <refsect1 role="examples"> &reftitle.examples; <para> <example> <title>Simple usage example</title> <programlisting role="php"> <![CDATA[ <?php $file = 'people.txt'; // Open the file to get existing content $current = file_get_contents($file); // Append a new person to the file $current .= "John Smith\n"; // Write the contents back to the file file_put_contents($file, $current); ?> ]]> </programlisting> </example> <example> <title>Using flags</title> <programlisting role="php"> <![CDATA[ <?php $file = 'people.txt'; // The new person to add to the file $person = "John Smith\n"; // Write the contents to the file, // using the FILE_APPEND flag to append the content to the end of the file // and the LOCK_EX flag to prevent anyone else writing to the file at the same time file_put_contents($file, $person, FILE_APPEND | LOCK_EX); ?> ]]> </programlisting> </example> </para> </refsect1> <refsect1 role="changelog"> &reftitle.changelog; <para> <informaltable> <tgroup cols="2"> <thead> <row> <entry>&Version;</entry> <entry>&Description;</entry> </row> </thead> <tbody> <row> <entry>5.0.0</entry> <entry> Added context support </entry> </row> <row> <entry>5.1.0</entry> <entry> Added support for <constant>LOCK_EX</constant> and the ability to pass a stream resource to the <parameter>data</parameter> parameter </entry> </row> <!-- FIXME PHP_6 <row> <entry>6.0.0</entry> <entry> Added support for the <constant>FILE_TEXT</constant> and <constant>FILE_BINARY</constant> flags </entry> </row> --> </tbody> </tgroup> </informaltable> </para> </refsect1> <refsect1 role="notes"> &reftitle.notes; ¬e.bin-safe; &tip.fopen-wrapper; </refsect1> <refsect1 role="seealso"> &reftitle.seealso; <para> <simplelist> <member><function>fopen</function></member> <member><function>fwrite</function></member> <member><function>file_get_contents</function></member> <member><function>stream_context_create</function></member> </simplelist> </para> </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:"~/.phpdoc/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 -->