nlopess         Sun Mar 27 07:38:20 2005 EDT

  Modified files:              
    /phpdoc/en/reference/pcre/functions preg-replace.xml 
  Log:
  switch to new style and document the new count parameter
  #an english reviewer wanted.. :)
  
http://cvs.php.net/diff.php/phpdoc/en/reference/pcre/functions/preg-replace.xml?r1=1.15&r2=1.16&ty=u
Index: phpdoc/en/reference/pcre/functions/preg-replace.xml
diff -u phpdoc/en/reference/pcre/functions/preg-replace.xml:1.15 
phpdoc/en/reference/pcre/functions/preg-replace.xml:1.16
--- phpdoc/en/reference/pcre/functions/preg-replace.xml:1.15    Sat Mar 12 
15:29:57 2005
+++ phpdoc/en/reference/pcre/functions/preg-replace.xml Sun Mar 27 07:38:19 2005
@@ -1,28 +1,25 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.15 $ -->
+<!-- $Revision: 1.16 $ -->
 <!-- splitted from ./en/functions/pcre.xml, last change in rev 1.2 -->
 <refentry id="function.preg-replace">
  <refnamediv>
   <refname>preg_replace</refname>
   <refpurpose>Perform a regular expression search and replace</refpurpose>
  </refnamediv>
- <refsect1>
-  <title>Description</title>
+ <refsect1 role="description">
+  &reftitle.description;
   <methodsynopsis>
    <type>mixed</type><methodname>preg_replace</methodname>
    <methodparam><type>mixed</type><parameter>pattern</parameter></methodparam>
    
<methodparam><type>mixed</type><parameter>replacement</parameter></methodparam>
    <methodparam><type>mixed</type><parameter>subject</parameter></methodparam>
    <methodparam 
choice="opt"><type>int</type><parameter>limit</parameter></methodparam>
+   <methodparam choice="opt"><type>int</type><parameter 
role="reference">count</parameter></methodparam>
   </methodsynopsis>
   <para>
    Searches <parameter>subject</parameter> for matches to
    <parameter>pattern</parameter> and replaces them with
-   <parameter>replacement</parameter>. If
-   <parameter>limit</parameter> is specified, then only
-   <parameter>limit</parameter> matches will be replaced; if
-   <parameter>limit</parameter> is omitted or is -1, then all
-   matches are replaced.
+   <parameter>replacement</parameter>.
   </para>
   <para>
    <parameter>Replacement</parameter> may contain references of the form
@@ -48,21 +45,191 @@
    as a literal.
   </para>
   <para>
+   If <parameter>subject</parameter> is an array, then the search
+   and replace is performed on every entry of
+   <parameter>subject</parameter>, and the return value is an array
+   as well.
+  </para>
+  <para>
+   The <literal>e</literal> modifier makes <function>preg_replace</function>
+   treat the <parameter>replacement</parameter> parameter as PHP code after
+   the appropriate references substitution is done. Tip: make sure that
+   <parameter>replacement</parameter> constitutes a valid PHP code string,
+   otherwise PHP will complain about a parse error at the line containing
+   <function>preg_replace</function>.
+  </para>
+</refsect1>
+
+<refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>pattern</parameter></term>
+     <listitem>
+      <para>
+       The pattern to search for. It can be either a string or an array with
+       strings.
+      </para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><parameter>replacement</parameter></term>
+     <listitem>
+      <para>
+       The string or an array with strings to replace. If this parameter is a
+       string and the <parameter>pattern</parameter> parameter is an array,
+       all pattens will be replaced by that string. If both
+       <parameter>pattern</parameter> and <parameter>replacement</parameter>
+       parameters are arrays, each <parameter>pattern</parameter> will be
+       replaced by the <parameter>replacement</parameter> counterpart. If
+       there are less keys in the <parameter>replacement</parameter> array
+       than in the <parameter>pattern</parameter> array, the excedent
+       <parameter>pattern</parameter>s will be replaced by an empty string.
+      </para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><parameter>subject</parameter></term>
+     <listitem>
+      <para>
+       The string or an array with strings to search and replace.
+      </para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><parameter>limit</parameter></term>
+     <listitem>
+      <para>
+       The maximum possible replacements for each pattern in each
+       <parameter>subject</parameter> string. Defaults to
+       <literal>-1</literal> (no limit).
+      </para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><parameter>count</parameter></term>
+     <listitem>
+      <para>
+       If specified, this variable will be filled with the number of
+       replacements done.
+      </para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </para>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   <function>preg_replace</function> returns an array if the
+   <parameter>subject</parameter> parameter is an array, or a string
+   otherwise.
+  </para>
+  <para>
+   If matches are found, the new <parameter>subject</parameter> will
+   be returned, otherwise <parameter>subject</parameter> will be
+   returned unchanged.
+  </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>4.0.1pl2</entry>
+       <entry>
+        Added the <parameter>limit</parameter> parameter
+       </entry>
+      </row>
+      <row>
+       <entry>4.0.4</entry>
+       <entry>
+        Added the '$n' form for the <parameter>replacement</parameter> 
parameter
+       </entry>
+      </row>
+      <row>
+       <entry>5.1.0</entry>
+       <entry>
+        Added the <parameter>count</parameter> parameter
+       </entry>
+      </row>
+     </tbody>
+    </tgroup>
+   </informaltable>
+  </para>
+ </refsect1>
+
+ <refsect1 role="examples">
+  &reftitle.examples;
+  <para>
+   <example>
+    <title>Convert HTML to text</title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+// $document should contain an HTML document.
+// This will remove HTML tags, javascript sections
+// and white space. It will also convert some
+// common HTML entities to their text equivalent.
+$search = array ('@<script[^>]*?>.*?</script>@si', // Strip out javascript
+                 '@<[\/\!]*?[^<>]*?>@si',          // Strip out HTML tags
+                 '@([\r\n])[\s]+@',                // Strip out white space
+                 '@&(quot|#34);@i',                // Replace HTML entities
+                 '@&(amp|#38);@i',
+                 '@&(lt|#60);@i',
+                 '@&(gt|#62);@i',
+                 '@&(nbsp|#160);@i',
+                 '@&(iexcl|#161);@i',
+                 '@&(cent|#162);@i',
+                 '@&(pound|#163);@i',
+                 '@&(copy|#169);@i',
+                 '@&#(\d+);@e');                    // evaluate as php
+
+$replace = array ('',
+                  '',
+                  '\1',
+                  '"',
+                  '&',
+                  '<',
+                  '>',
+                  ' ',
+                  chr(161),
+                  chr(162),
+                  chr(163),
+                  chr(169),
+                  'chr(\1)');
+
+$text = preg_replace($search, $replace, $document);
+?>
+]]>
+    </programlisting>
+   </example>
+  </para>
+  <para>
    <example>
     <title>Using backreferences followed by numeric literals</title>
     <programlisting role="php">
 <![CDATA[
 <?php
-$string = "April 15, 2003";
-$pattern = "/(\w+) (\d+), (\d+)/i";
-$replacement = "\${1}1,\$3";
+$string = 'April 15, 2003';
+$pattern = '/(\w+) (\d+), (\d+)/i';
+$replacement = '${1}1,$3';
 echo preg_replace($pattern, $replacement, $string);
 ?>
 ]]>
     </programlisting>
-    <para>
-     This example will output :
-    </para>
+    &example.outputs;
     <screen>
 <![CDATA[
 April1,2003
@@ -71,42 +238,23 @@
    </example>
   </para>
   <para>
-   If matches are found, the new <parameter>subject</parameter> will
-   be returned, otherwise <parameter>subject</parameter> will be
-   returned unchanged.
-  </para>
-  <para>
-   Every parameter to <function>preg_replace</function> (except
-   <parameter>limit</parameter>) can be an unidimensional array.
-   When using arrays with <parameter>pattern</parameter> and
-   <parameter>replacement</parameter>, the keys are processed in the order
-   they appear in the array.  This is <emphasis>not necessarily</emphasis>
-   the same as the numerical index order.  If you use indexes to identify
-   which <parameter>pattern</parameter> should be replaced by which
-   <parameter>replacement</parameter>, you should perform a
-   <function>ksort</function> on each array prior to calling
-   <function>preg_replace</function>.
-  </para>
-  <para>
    <example>
     <title>Using indexed arrays with <function>preg_replace</function></title>
     <programlisting role="php">
 <![CDATA[
 <?php
-$string = "The quick brown fox jumped over the lazy dog.";
-$patterns[0] = "/quick/";
-$patterns[1] = "/brown/";
-$patterns[2] = "/fox/";
-$replacements[2] = "bear";
-$replacements[1] = "black";
-$replacements[0] = "slow";
+$string = 'The quick brown fox jumped over the lazy dog.';
+$patterns[0] = '/quick/';
+$patterns[1] = '/brown/';
+$patterns[2] = '/fox/';
+$replacements[2] = 'bear';
+$replacements[1] = 'black';
+$replacements[0] = 'slow';
 echo preg_replace($patterns, $replacements, $string);
 ?>
 ]]>
     </programlisting>
-    <para>
-     Output:
-    </para>
+    &example.outputs;
     <screen>
 <![CDATA[
 The bear black slow jumped over the lazy dog.
@@ -124,9 +272,7 @@
 ?>
 ]]>
     </programlisting>
-    <para>
-     Output :
-    </para>
+    &example.outputs;
     <screen>
 <![CDATA[
 The slow black bear jumped over the lazy dog.
@@ -135,47 +281,19 @@
    </example>
   </para>
   <para>
-   If <parameter>subject</parameter> is an array, then the search
-   and replace is performed on every entry of
-   <parameter>subject</parameter>, and the return value is an array
-   as well.
-  </para>
-  <para>
-   If <parameter>pattern</parameter> and <parameter>replacement</parameter>
-   are arrays, then <function>preg_replace</function> takes a value from
-   each array and uses them to do search and replace on
-   <parameter>subject</parameter>.  If <parameter>replacement</parameter>
-   has fewer values than <parameter>pattern</parameter>, then empty string
-   is used for the rest of replacement values.  If <parameter>pattern
-   </parameter> is an array and <parameter>replacement</parameter> is a
-   string, then this replacement string is used for every value of
-   <parameter>pattern</parameter>.  The converse would not make sense,
-   though.
-  </para>
-  <para>
-   The <literal>e</literal> modifier makes <function>preg_replace</function>
-   treat the <parameter>replacement</parameter> parameter as PHP code after
-   the appropriate references substitution is done. Tip: make sure that
-   <parameter>replacement</parameter> constitutes a valid PHP code string,
-   otherwise PHP will complain about a parse error at the line containing
-   <function>preg_replace</function>.
-  </para>
-  <para>
    <example>
     <title>Replacing several values</title>
     <programlisting role="php">
 <![CDATA[
 <?php
-$patterns = array ("/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/",
-                 "/^\s*{(\w+)}\s*=/");
-$replace = array ("\\3/\\4/\\1\\2", "$\\1 =");
-echo preg_replace($patterns, $replace, "{startDate} = 1999-5-27");
+$patterns = array ('/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/',
+                   '/^\s*{(\w+)}\s*=/');
+$replace = array ('\3/\4/\1\2', '$\1 =');
+echo preg_replace($patterns, $replace, '{startDate} = 1999-5-27');
 ?>
 ]]>
     </programlisting>
-    <para>
-     This example will produce:
-    </para>
+    &example.outputs;
     <screen>
 <![CDATA[
 $startDate = 5/27/1999
@@ -190,8 +308,8 @@
 <![CDATA[
 <?php
 preg_replace("/(<\/?)(\w+)([^>]*>)/e", 
-            "'\\1'.strtoupper('\\2').'\\3'", 
-            $html_body);
+             "'\\1'.strtoupper('\\2').'\\3'", 
+             $html_body);
 ?>
 ]]>
     </programlisting>
@@ -202,41 +320,17 @@
   </para>
   <para>
    <example>
-    <title>Convert HTML to text</title>
+    <title>Strip whitespace</title>
+    <para>
+     This example strips excess whitespace from a string.
+    </para>
     <programlisting role="php">
 <![CDATA[
 <?php
-// $document should contain an HTML document.
-// This will remove HTML tags, javascript sections
-// and white space. It will also convert some
-// common HTML entities to their text equivalent.
-$search = array ("'<script[^>]*?>.*?</script>'si",  // Strip out javascript
-               "'<[\/\!]*?[^<>]*?>'si",           // Strip out HTML tags
-               "'([\r\n])[\s]+'",                 // Strip out white space
-               "'&(quot|#34);'i",                 // Replace HTML entities
-               "'&(amp|#38);'i",
-               "'&(lt|#60);'i",
-               "'&(gt|#62);'i",
-               "'&(nbsp|#160);'i",
-               "'&(iexcl|#161);'i",
-               "'&(cent|#162);'i",
-               "'&(pound|#163);'i",
-               "'&(copy|#169);'i",
-               "'&#(\d+);'e");                    // evaluate as php
-$replace = array ("",
-                "",
-                "\\1",
-                "\"",
-                "&",
-                "<",
-                ">",
-                " ",
-                chr(161),
-                chr(162),
-                chr(163),
-                chr(169),
-                "chr(\\1)");
-$text = preg_replace($search, $replace, $document);
+$str = 'foo   o';
+$str = preg_replace('/\s\s+/', ' ', $str);
+// This will be 'foo o' now
+echo $str;
 ?>
 ]]>
     </programlisting>
@@ -244,31 +338,52 @@
   </para>
   <para>
    <example>
-    <title>Strip whitespace</title>
-    <para>
-     This example strips excess whitespace from a string.
-    </para>
+    <title>Using the <parameter>count</parameter> parameter</title>
     <programlisting role="php">
 <![CDATA[
 <?php
-$str = 'foo   o';
-$str = preg_replace('/\s\s+/', ' ', $str);
-// This will be 'foo o' now
-echo $str;
+$count = 0;
+
+echo preg_replace(array('/\d/', '/\s/'), '*', 'xp 4 to', -1 , $count);
+echo $count; //3
 ?>
 ]]>
     </programlisting>
+    &example.outputs;
+    <screen>
+<![CDATA[
+xp***to
+3
+]]>
+    </screen>
    </example>
   </para>
+ </refsect1>
+
+ <refsect1 role="notes">
+  &reftitle.notes;
   <note>
    <para>
-    Parameter <parameter>limit</parameter> was added after PHP 4.0.1pl2.
+    When using arrays with <parameter>pattern</parameter> and
+    <parameter>replacement</parameter>, the keys are processed in the order
+    they appear in the array. This is <emphasis>not necessarily</emphasis> the
+    same as the numerical index order. If you use indexes to identify which
+    <parameter>pattern</parameter> should be replaced by which
+    <parameter>replacement</parameter>, you should perform a
+    <function>ksort</function> on each array prior to calling
+    <function>preg_replace</function>.
    </para>
   </note>
+ </refsect1>
+
+ <refsect1 role="seealso">
+  &reftitle.seealso;
   <para>
-   See also <function>preg_match</function>,
-   <function>preg_match_all</function>, and
-   <function>preg_split</function>.
+   <simplelist>
+    <member><function>preg_match</function></member>
+    <member><function>preg_replace_callback</function></member>
+    <member><function>preg_split</function></member>
+   </simplelist>
   </para>
  </refsect1>
 </refentry>

Reply via email to