<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/book.mbstring.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'mbstring.overload.php',
    1 => 'Exploitation des cha&icirc;nes multioctets en PHP',
    2 => 'Exploitation des cha&icirc;nes multioctets en PHP',
  ),
  'up' => 
  array (
    0 => 'book.mbstring.php',
    1 => 'Cha&icirc;nes de caract&egrave;res multioctets',
  ),
  'prev' => 
  array (
    0 => 'mbstring.supported-encodings.php',
    1 => 'Jeux de caract&egrave;res support&eacute;s',
  ),
  'next' => 
  array (
    0 => 'mbstring.php4.req.php',
    1 => 'Pr&eacute;requis de l\'encodage en PHP',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/mbstring/overloading.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="mbstring.overload" class="chapter">
 <h1 class="title">
  Exploitation des chaînes multioctets en PHP
 </h1>


 <div class="warning"><strong class="warning">Avertissement</strong><p class="simpara">
 Cette fonctionnalité est <em>OBSOLÈTE</em> à partir de PHP 7.2.0,
 et <em>SUPPRIMÉE</em> à partir de PHP 8.0.0.
 Dépendre de cette fonctionnalité est fortement déconseillé.
</p></div>
 <p class="para">
  Il est possible que l&#039;on trouve difficile de faire fonctionner une application PHP
  existante dans un environnement multioctets. Ceci est dû au fait
  que la plupart des applications PHP sont écrites avec des fonctions
  de chaînes de caractères standards comme la fonction
  <span class="function"><a href="function.substr.php" class="function">substr()</a></span>, qui est connue pour ne pas gérer
  proprement les chaînes multioctets.
 </p>
 <p class="para">
  Mbstring supporte aussi la surcharge de fonctions, pour
  permettre le support des chaînes multioctets sans modifier les
  scripts PHP. En utilisant ce système de surcharge de fonctions,
  certaines fonctions PHP seront remplacées par leur équivalent
  de mbstring. Par exemple <span class="function"><a href="function.mb-substr.php" class="function">mb_substr()</a></span> remplacera
  <span class="function"><a href="function.substr.php" class="function">substr()</a></span>. Ce système de remplacement transparent,
  permet un portage simple et efficace des applications.
 </p>
 <p class="para">
  Pour utiliser la surcharge de fonctions, définissez
  <code class="literal">mbstring.func_overload</code>, dans le <var class="filename">php.ini</var>,
  à une valeur positive qui représente une combinaison de masques d&#039;octets
  spécifiant les catégories de fonctions à surcharger. Il doit être défini à
  1 pour surcharger la fonction <span class="function"><a href="function.mail.php" class="function">mail()</a></span>, 2 pour les
  fonctions de chaînes, 4 pour les fonctions d&#039;expression régulières.
  Par exemple, avec la valeur 7, toutes les fonctions précédentes seront
  surchargées. Voici la liste complète des fonctions surchargées, avec
  leur fonction de remplacement.
  <table class="doctable table">
   <caption><strong>Fonctions de remplacement</strong></caption>
   
    <thead>
     <tr>
      <th>Valeur de mbstring.func_overload</th>
      <th>Fonction originale</th>
      <th>Fonction de remplacement</th>
     </tr>

   </thead>

   <tbody class="tbody">
     <tr>
      <td>1</td>
      <td><span class="function"><a href="function.mail.php" class="function">mail()</a></span></td>
      <td><span class="function"><a href="function.mb-send-mail.php" class="function">mb_send_mail()</a></span></td>
     </tr>

     <tr>
      <td>2</td>
      <td><span class="function"><a href="function.strlen.php" class="function">strlen()</a></span></td>
      <td><span class="function"><a href="function.mb-strlen.php" class="function">mb_strlen()</a></span></td>
     </tr>

     <tr>
      <td>2</td>
      <td><span class="function"><a href="function.strpos.php" class="function">strpos()</a></span></td>
      <td><span class="function"><a href="function.mb-strpos.php" class="function">mb_strpos()</a></span></td>
     </tr>

     <tr>
      <td>2</td>
      <td><span class="function"><a href="function.strrpos.php" class="function">strrpos()</a></span></td>
      <td><span class="function"><a href="function.mb-strrpos.php" class="function">mb_strrpos()</a></span></td>
     </tr>

     <tr>
      <td>2</td>
      <td><span class="function"><a href="function.substr.php" class="function">substr()</a></span></td>
      <td><span class="function"><a href="function.mb-substr.php" class="function">mb_substr()</a></span></td>
     </tr>

     <tr>
      <td>2</td>
      <td><span class="function"><a href="function.strtolower.php" class="function">strtolower()</a></span></td>
      <td><span class="function"><a href="function.mb-strtolower.php" class="function">mb_strtolower()</a></span></td>
     </tr>

     <tr>
      <td>2</td>
      <td><span class="function"><a href="function.strtoupper.php" class="function">strtoupper()</a></span></td>
      <td><span class="function"><a href="function.mb-strtoupper.php" class="function">mb_strtoupper()</a></span></td>
     </tr>

     <tr>
      <td>2</td>
      <td><span class="function"><a href="function.stripos.php" class="function">stripos()</a></span></td>
      <td><span class="function"><a href="function.mb-stripos.php" class="function">mb_stripos()</a></span></td>
     </tr>

     <tr>
      <td>2</td>
      <td><span class="function"><a href="function.strripos.php" class="function">strripos()</a></span></td>
      <td><span class="function"><a href="function.mb-strripos.php" class="function">mb_strripos()</a></span></td>
     </tr>

     <tr>
      <td>2</td>
      <td><span class="function"><a href="function.strstr.php" class="function">strstr()</a></span></td>
      <td><span class="function"><a href="function.mb-strstr.php" class="function">mb_strstr()</a></span></td>
     </tr>

     <tr>
      <td>2</td>
      <td><span class="function"><a href="function.stristr.php" class="function">stristr()</a></span></td>
      <td><span class="function"><a href="function.mb-stristr.php" class="function">mb_stristr()</a></span></td>
     </tr>

     <tr>
      <td>2</td>
      <td><span class="function"><a href="function.strrchr.php" class="function">strrchr()</a></span></td>
      <td><span class="function"><a href="function.mb-strrchr.php" class="function">mb_strrchr()</a></span></td>
     </tr>

     <tr>
      <td>2</td>
      <td><span class="function"><a href="function.substr-count.php" class="function">substr_count()</a></span></td>
      <td><span class="function"><a href="function.mb-substr-count.php" class="function">mb_substr_count()</a></span></td>
     </tr>

    </tbody>
   
  </table>

 </p>
 <blockquote class="note"><p><strong class="note">Note</strong>: 
  <p class="para">
   Il n&#039;est pas recommandé d&#039;utiliser le remplacement des fonctions mbstring
   dans un contexte de <code class="literal">per-directory</code>, car il n&#039;est pas
   confirmé encore qu&#039;elles sont suffisamment stables dans un environnement
   de production et peuvent conduire à des résultats incohérents.
  </p>
 </p></blockquote>
</div>
<?php manual_footer($setup); ?>