downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Our source is open

The syntax highlighted source is automatically generated by PHP from the plaintext script. If you're interested in what's behind the several functions we used, you can always take a look at the source of the following files:

Of course, if you want to see the source of this page, we have it available. You can also browse the SVN repository for this website on svn.php.net.

Source of: /manual/fr/function.preg-match-all.php

<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$PARENTS = array();
include_once
dirname(__FILE__) ."/toc/ref.pcre.inc";
$setup = array (
 
'home' =>
  array (
   
0 => 'index.php',
   
1 => 'PHP Manual',
  ),
 
'head' =>
  array (
   
0 => 'UTF-8',
   
1 => 'fr',
  ),
 
'this' =>
  array (
   
0 => 'function.preg-match-all.php',
   
1 => 'preg_match_all',
  ),
 
'up' =>
  array (
   
0 => 'ref.pcre.php',
   
1 => 'Fonctions PCRE',
  ),
 
'prev' =>
  array (
   
0 => 'function.preg-last-error.php',
   
1 => 'preg_last_error',
  ),
 
'next' =>
  array (
   
0 => 'function.preg-match.php',
   
1 => 'preg_match',
  ),
);
$setup["toc"] = $TOC;
$setup["parents"] = $PARENTS;
manual_setup($setup);

manual_header();
?>
<div id="function.preg-match-all" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">preg_match_all</h1>
  <p class="verinfo">(PHP 4, PHP 5)</p><p class="refpurpose"><span class="refname">preg_match_all</span> &mdash; <span class="dc-title">Expression rationnelle globale</span></p>

 </div>

 <a name="function.preg-match-all.description"></a><div class="refsect1 description">
  <h3 class="title">Description</h3>
  <div class="methodsynopsis dc-description">
   <span class="type">int</span> <span class="methodname"><b>preg_match_all</b></span>
    ( <span class="methodparam"><span class="type">string</span> <tt class="parameter">$pattern</tt></span>
   , <span class="methodparam"><span class="type">string</span> <tt class="parameter">$subject</tt></span>
   , <span class="methodparam"><span class="type">array</span> <tt class="parameter reference">&amp;$matches</tt></span>
   [, <span class="methodparam"><span class="type">int</span> <tt class="parameter">$flags</tt></span>
   [, <span class="methodparam"><span class="type">int</span> <tt class="parameter">$offset</tt></span>
  ]] )</div>

  <p class="para rdfs-comment">
   Analyse <i><tt class="parameter">subject</tt></i>
 pour trouver l&#039;expression
   <i><tt class="parameter">pattern</tt></i>
 et met les résultats dans
   <i><tt class="parameter">matches</tt></i>
, dans l&#039;ordre spécifié par
   <i><tt class="parameter">flags</tt></i>
.
  </p>
  <p class="para">
   Après avoir trouvé un premier résultat, la recherche continue jusqu&#039;à
   la fin de la chaîne.
  </p>
 </div>


 <a name="function.preg-match-all.parameters"></a><div class="refsect1 parameters">
  <h3 class="title">Liste de paramètres</h3>
  <p class="para">
   </p><dl>

    <dt class="varlistentry">

     <span class="term"><i><tt class="parameter">pattern</tt></i>
</span>

     </dt><dd class="listitem">

      <p class="para">
       Le masque à chercher, sous la forme d&#039;une <a href="language.types.string.php" class="link">chaîne de caractères</a>.
      </p>
     </dd>

   
    <dt class="varlistentry">

     <span class="term"><i><tt class="parameter">subject</tt></i>
</span>

     </dt><dd class="listitem">

      <p class="para">
       La chaîne d&#039;entrée.
      </p>
     </dd>

   
    <dt class="varlistentry">

     <span class="term"><i><tt class="parameter">matches</tt></i>
</span>

     </dt><dd class="listitem">

      <p class="para">
       Tableau contenant tous les résultats, dans un tableau multidimensionnel ordonné
       suivant le paramètre <i><tt class="parameter">flags</tt></i>
.
      </p>
     </dd>

   
    <dt class="varlistentry">

     <span class="term"><i><tt class="parameter">flags</tt></i>
</span>

     </dt><dd class="listitem">

      <p class="para">
       Peut prendre une des deux valeurs suivantes
       (notez bien qu&#039;il est incohérent d&#039;utiliser
       <b><tt class="constant">PREG_PATTERN_ORDER</tt></b> avec
       <b><tt class="constant">PREG_SET_ORDER</tt></b> ) :
       </p><dl>

        <dt class="varlistentry">

         <span class="term"><b><tt class="constant">PREG_PATTERN_ORDER</tt></b></span>

         </dt><dd class="listitem">

          <p class="para">
           L&#039;ordre est tel que <var class="varname">$matches[0]</var> est un tableau qui
           contient les résultats qui satisfont le masque
           complet, <var class="varname">$matches[1]</var> est un tableau qui contient les
           résultats qui satisfont la première
           parenthèse capturante, etc.
          </p>
          <p class="para">
           </p><div class="informalexample">
            <div class="example-contents programlisting">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />preg_match_all</span><span style="color: #007700">(</span><span style="color: #DD0000">"|&lt;[^&gt;]+&gt;(.*)&lt;/[^&gt;]+&gt;|U"</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"&lt;b&gt;exemple&nbsp;:&nbsp;&lt;/b&gt;&lt;div&nbsp;align=left&gt;ceci&nbsp;est&nbsp;un&nbsp;test&lt;/div&gt;"</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$out</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">PREG_PATTERN_ORDER</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$out</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">][</span><span style="color: #0000BB">0</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">",&nbsp;"&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$out</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">][</span><span style="color: #0000BB">1</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />echo&nbsp;</span><span style="color: #0000BB">$out</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">][</span><span style="color: #0000BB">0</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">",&nbsp;"&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$out</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">][</span><span style="color: #0000BB">1</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
            </div>

            <p class="para">L&#039;exemple ci-dessus va afficher :</p>
            <div class="example-contents screen">
<div class="cdata"><pre>
&lt;b&gt;exemple : &lt;/b&gt;, &lt;div align=left&gt;ceci est un test&lt;/div&gt;
exemple : , ceci est un test
</pre></div>
            </div>
            <p class="para">
             Ainsi, <var class="varname">$out[0]</var> est un tableau qui contient les résultats qui
             satisfont le masque complet, et <var class="varname">$out[1]</var> est un tableau qui contient
             les balises entre &gt; et &lt;.
            </p>
           </div><p>
          </p>
         </dd>

       
        <dt class="varlistentry">

         <span class="term"><b><tt class="constant">PREG_SET_ORDER</tt></b></span>

         </dt><dd class="listitem">

          <p class="para">
           Les résultats sont classés de telle façon que <var class="varname">$matches[0]</var>
           contient la première série de résultats, <var class="varname">$matches[1]</var> contient
           la deuxième, etc.
           </p><div class="informalexample">
            <div class="example-contents programlisting">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />preg_match_all</span><span style="color: #007700">(</span><span style="color: #DD0000">"|&lt;[^&gt;]+&gt;(.*)&lt;/[^&gt;]+&gt;|U"</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"&lt;b&gt;exemple&nbsp;:&nbsp;&lt;/b&gt;&lt;div&nbsp;align=\"left\"&gt;ceci&nbsp;est&nbsp;un&nbsp;test&lt;/div&gt;"</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$out</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">PREG_SET_ORDER</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$out</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">][</span><span style="color: #0000BB">0</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">",&nbsp;"&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$out</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">][</span><span style="color: #0000BB">1</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />echo&nbsp;</span><span style="color: #0000BB">$out</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">][</span><span style="color: #0000BB">0</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">",&nbsp;"&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$out</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">][</span><span style="color: #0000BB">1</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
            </div>

            <p class="para">L&#039;exemple ci-dessus va afficher :</p>
            <div class="example-contents screen">
<div class="cdata"><pre>
&lt;b&gt;exemple : &lt;/b&gt;, exemple :
&lt;div align=&quot;left&quot;&gt;ceci est un test&lt;/div&gt;, ceci est un test
</pre></div>
            </div>
           </div><p>
          </p>
         </dd>

       
        <dt class="varlistentry">

         <span class="term"><b><tt class="constant">PREG_OFFSET_CAPTURE</tt></b></span>

         </dt><dd class="listitem">

          <p class="para">
           Si cette option est activée, toutes les sous-chaînes qui satisfont
           le masque seront aussi identifiées par leur offset. Notez que cela
           modifie le format de la valeur retournée, puisque chaque élément
           de réponse devient un tableau contenant la sous-chaîne résultat,
           à l&#039;index <i>0</i> dans la chaîne <i><tt class="parameter">subject</tt></i>
 
           constant <i>1</i>.
          </p>
         </dd>

       
       </dl>
<p>
      </p>
      <p class="para">
       Si <i><tt class="parameter">order</tt></i>
 est omis,
       <b><tt class="constant">PREG_PATTERN_ORDER</tt></b> est utilisé par défaut.
      </p>
     </dd>

   
    <dt class="varlistentry">

     <span class="term"><i><tt class="parameter">offset</tt></i>
</span>

     </dt><dd class="listitem">

      <p class="para">
       Normalement, la recherche commence au début de la chaîne
       <i><tt class="parameter">subject</tt></i>
. Le paramètre optionnel
       <i><tt class="parameter">offset</tt></i>
 peut être utilisé pour spécifier
       une position pour le début de la recherche (en octets).
      </p>
      <blockquote><p><b class="note">Note</b>:
      
        Utiliser le paramètre <i><tt class="parameter">offset</tt></i>
 ne revient pas
        à passer <i>substr($subject, $offset)</i> à
        <b>preg_match_all()</b> à la place de la chaîne
        <i><tt class="parameter">subject</tt></i>
, car
        <i><tt class="parameter">pattern</tt></i>
 peut contenir des assertions comme
        <em class="emphasis">^</em>, <em class="emphasis">$</em> ou
        <em class="emphasis">(?&lt;=x)</em>. Lisez la documentation
        sur la fonction <a href="function.preg-match.php" class="function">preg_match()</a> pour des exemples.
       <br />
      </p></blockquote>
     </dd>

   
   </dl>
<p>
  </p>
 </div>


 <a name="function.preg-match-all.returnvalues"></a><div class="refsect1 returnvalues">
  <h3 class="title">Valeurs de retour</h3>
  <p class="para">
   Retourne le nombre de résultats qui satisfont le masque
   complet, ou <b><tt class="constant">FALSE</tt></b> si une erreur survient.
  </p>
 </div>


 <a name="function.preg-match-all.changelog"></a><div class="refsect1 changelog">
  <h3 class="title">Historique</h3>
  <p class="para">
   </p><table class="doctable informaltable">
   
     <thead valign="middle">
      <tr valign="middle">
       <th>Version</th>
       <th>Description</th>
      </tr>

     </thead>

     <tbody valign="middle" class="tbody">
      <tr valign="middle">
       <td align="left">4.3.3</td>
       <td align="left">
        Le paramètre <i><tt class="parameter">offset</tt></i>
 a été ajouté.
       </td>
      </tr>

      <tr valign="middle">
       <td align="left">4.3.0</td>
       <td align="left">
        Le drapeau <b><tt class="constant">PREG_OFFSET_CAPTURE</tt></b> a été ajouté.
       </td>
      </tr>

     </tbody>
   
   </table>
<p>
  </p>
 </div>


 <a name="function.preg-match-all.examples"></a><div class="refsect1 examples">
  <h3 class="title">Exemples</h3>
  <p class="para">
   </p><div class="example">
    <p><b>Exemple #1 Extraction de tous les numéros de téléphone d&#039;un texte</b></p>
    <div class="example-contents programlisting">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />preg_match_all</span><span style="color: #007700">(</span><span style="color: #DD0000">"/\(?&nbsp;&nbsp;(\d{3})?&nbsp;&nbsp;\)?&nbsp;&nbsp;(?(1)&nbsp;&nbsp;[\-\s]&nbsp;)&nbsp;\d{3}-\d{4}/x"</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"Call&nbsp;555-1212&nbsp;or&nbsp;1-800-555-1212"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$phones</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
    </div>

   </div><p>
  </p>
  <p class="para">
   </p><div class="example">
    <p><b>Exemple #2 Recherche les couples de balises HTML (gourmand)</b></p>
    <div class="example-contents programlisting">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">//&nbsp;Cet&nbsp;exemple&nbsp;utilise&nbsp;les&nbsp;références&nbsp;arrières&nbsp;(\\2).<br />//&nbsp;Elles&nbsp;indiquent&nbsp;à&nbsp;l'analyseur&nbsp;qu'il&nbsp;doit&nbsp;trouver&nbsp;quelque&nbsp;chose&nbsp;qu'il<br />//&nbsp;a&nbsp;déjà&nbsp;repéré&nbsp;un&nbsp;peu&nbsp;plus&nbsp;tôt<br />//&nbsp;le&nbsp;nombre&nbsp;2&nbsp;indique&nbsp;que&nbsp;c'est&nbsp;le&nbsp;deuxième&nbsp;jeu&nbsp;de&nbsp;parenthèses<br />//&nbsp;capturante&nbsp;qui&nbsp;doit&nbsp;être&nbsp;utilisé&nbsp;(ici,&nbsp;([\w]+)).<br />//&nbsp;L'antislash&nbsp;est&nbsp;nécessaire&nbsp;ici,&nbsp;car&nbsp;la&nbsp;chaîne&nbsp;est&nbsp;entre&nbsp;guillemets&nbsp;doubles<br /><br /></span><span style="color: #0000BB">$html&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"&lt;b&gt;texte&nbsp;en&nbsp;gras&lt;/b&gt;&lt;a&nbsp;href=howdy.html&gt;cliquez&nbsp;moi&lt;/a&gt;"</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">preg_match_all</span><span style="color: #007700">(</span><span style="color: #DD0000">"/(&lt;([\w]+)[^&gt;]*&gt;)(.*?)(&lt;\/\\2&gt;)/"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$html</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$matches</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">PREG_SET_ORDER</span><span style="color: #007700">);<br /><br />foreach&nbsp;(</span><span style="color: #0000BB">$matches&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">$val</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">"matched:&nbsp;"&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$val</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">"part&nbsp;1:&nbsp;"&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$val</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">"part&nbsp;2:&nbsp;"&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$val</span><span style="color: #007700">[</span><span style="color: #0000BB">3</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">"part&nbsp;3:&nbsp;"&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$val</span><span style="color: #007700">[</span><span style="color: #0000BB">4</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">"\n\n"</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
    </div>

    <div class="example-contents para"><p>L&#039;exemple ci-dessus va afficher :</p></div>
    <div class="example-contents screen">
<div class="cdata"><pre>
matched: &lt;b&gt;texte en gras&lt;/b&gt;
part 1: &lt;b&gt;
part 2: texte en gras
part 3: &lt;/b&gt;

matched: &lt;a href=howdy.html&gt;cliquez moi&lt;/a&gt;
part 1: &lt;a href=howdy.html&gt;
part 2: cliquez moi
part 3: &lt;/a&gt;
</pre></div>
    </div>
   </div><p>
  </p>
  <p class="para">
   </p><div class="example">
    <p><b>Exemple #3 Utilisation d&#039;un sous-masque nommé</b></p>
    <div class="example-contents programlisting">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /><br />$str&nbsp;</span><span style="color: #007700">=&nbsp;&lt;&lt;&lt;FOO<br /></span><span style="color: #DD0000">a:&nbsp;1<br />b:&nbsp;2<br />c:&nbsp;3<br /></span><span style="color: #007700">FOO;<br /><br /></span><span style="color: #0000BB">preg_match_all</span><span style="color: #007700">(</span><span style="color: #DD0000">'/(?&lt;name&gt;\w+):&nbsp;(?&lt;digit&gt;\d+)/'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$str</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$matches</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$matches</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
    </div>

    <div class="example-contents para"><p>L&#039;exemple ci-dessus va afficher :</p></div>
    <div class="example-contents screen">
<div class="cdata"><pre>
Array
(
    [0] =&gt; Array
        (
            [0] =&gt; a: 1
            [1] =&gt; b: 2
            [2] =&gt; c: 3
        )

    [name] =&gt; Array
        (
            [0] =&gt; a
            [1] =&gt; b
            [2] =&gt; c
        )

    [1] =&gt; Array
        (
            [0] =&gt; a
            [1] =&gt; b
            [2] =&gt; c
        )

    [digit] =&gt; Array
        (
            [0] =&gt; 1
            [1] =&gt; 2
            [2] =&gt; 3
        )

    [2] =&gt; Array
        (
            [0] =&gt; 1
            [1] =&gt; 2
            [2] =&gt; 3
        )

)
</pre></div>
    </div>
   </div><p>
  </p>
 </div>


 <a name="function.preg-match-all.seealso"></a><div class="refsect1 seealso">
  <h3 class="title">Voir aussi</h3>
  <p class="para">
   </p><ul class="simplelist">
    <li class="member"><a href="function.preg-match.php" class="function" rel="rdfs-seeAlso">preg_match()</a> - Expression rationnelle standard</li>
    <li class="member"><a href="function.preg-replace.php" class="function" rel="rdfs-seeAlso">preg_replace()</a> - Rechercher et remplacer par expression rationnelle standard</li>
    <li class="member"><a href="function.preg-split.php" class="function" rel="rdfs-seeAlso">preg_split()</a> - Éclate une chaîne par expression rationnelle</li>
   </ul><p>
  </p>
 </div>


</div><?php manual_footer(); ?>
 
show source | credits | sitemap | contact | advertising | mirror sites