<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.misc.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'function.unpack.php',
    1 => 'unpack',
    2 => 'D&eacute;conditionne des donn&eacute;es depuis une cha&icirc;ne binaire',
  ),
  'up' => 
  array (
    0 => 'ref.misc.php',
    1 => 'Fonctions diverses',
  ),
  'prev' => 
  array (
    0 => 'function.uniqid.php',
    1 => 'uniqid',
  ),
  'next' => 
  array (
    0 => 'function.usleep.php',
    1 => 'usleep',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/misc/functions/unpack.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.unpack" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">unpack</h1>
  <p class="verinfo">(PHP 4, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">unpack</span> &mdash; <span class="dc-title">Déconditionne des données depuis une chaîne binaire</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.unpack-description">
  <h3 class="title">Description</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>unpack</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$format</code></span>, <span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$string</code></span>, <span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$offset</code><span class="initializer"> = 0</span></span>): <span class="type"><span class="type"><a href="language.types.array.php" class="type array">array</a></span>|<span class="type"><a href="language.types.singleton.php" class="type false">false</a></span></span></div>

  <p class="para rdfs-comment">
   Déconditionne les données <code class="parameter">data</code>
   depuis une chaîne binaire avec le format <code class="parameter">format</code>.
  </p>
  <p class="para">
   Les données déconditionnées sont stockées dans un
   tableau. Pour cela, il faut donner un nom à chaque
   format utilisé et les séparer par des slash (/). Si
   un argument de répétition est présent, alors chacune des
   clés du tableau aura un numéro de séquence derrière le
   nom fourni.
  </p>
  <p class="para">
   Des modifications ont été effectuées pour aligner le comportement
   de cette fonction avec Perl :
   <ul class="simplelist">
    <li>
     Le code "a" ne supprime plus les octets NULL finaux.
    </li>
    <li>
     Le code "A" supprime maintenant tous les espaces blancs ASCII finaux
     (espace, tabulation, nouvelles lignes, retour à la ligne, et octets NULL).
    </li>
    <li>
     Le code "Z" a été ajouté pour les chaînes complétées par des caractères
     NULL, et supprime les octets NULL finaux.
    </li>
   </ul>
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.unpack-parameters">
  <h3 class="title">Liste de paramètres</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">format</code></dt>
     <dd>
      <p class="para">
       Voir la fonction <span class="function"><a href="function.pack.php" class="function">pack()</a></span> pour une explication des codes de format.
      </p>
     </dd>
    
    
     <dt><code class="parameter">string</code></dt>
     <dd>
      <p class="para">
       Les données conditionnées.
      </p>
     </dd>
    
    
     <dt><code class="parameter">offset</code></dt>
     <dd>
      <p class="para">
       La position où débuter le déconditionnement.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.unpack-returnvalues">
  <h3 class="title">Valeurs de retour</h3>
  <p class="para">
   Retourne un tableau associatif contenant les éléments déconditionnés
   d&#039;une chaîne binaire,  ou <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> si une erreur survient.
  </p>
 </div>


 <div class="refsect1 changelog" id="refsect1-function.unpack-changelog">
  <h3 class="title">Historique</h3>
  <p class="para">
   <table class="doctable informaltable">
    
     <thead>
      <tr>
       <th>Version</th>
       <th>Description</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>7.2.0</td>
       <td>
        Les types <span class="type"><a href="language.types.float.php" class="type float">float</a></span> et <span class="type"><a href="language.types.float.php" class="type double">double</a></span> supportent à la fois l&#039;orientation Big Endian et Little Endian.
       </td>
      </tr>

      <tr>
       <td>7.1.0</td>
       <td>
        La position <code class="parameter">offset</code> optionnelle a été ajoutée.
       </td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-function.unpack-examples">
  <h3 class="title">Exemples</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Exemple #1 Exemple avec <span class="function"><strong>unpack()</strong></span></strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$binarydata </span><span style="color: #007700">= </span><span style="color: #DD0000">"\x04\x00\xa0\x00"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$array </span><span style="color: #007700">= </span><span style="color: #0000BB">unpack</span><span style="color: #007700">(</span><span style="color: #DD0000">"cchars/nint"</span><span style="color: #007700">, </span><span style="color: #0000BB">$binarydata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

    <div class="example-contents"><p>L&#039;exemple ci-dessus va afficher :</p></div>
    <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">Array
(
    [chars] =&gt; 4
    [int] =&gt; 160
)</pre>
</div>
    </div>
   </div>
  </p>

  <p class="para">
   <div class="example" id="example-2">
    <p><strong>Exemple #2 Exemple avec <span class="function"><strong>unpack()</strong></span> et un argument de répétition</strong></p>
    <div class="example-contents">
 <div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$binarydata </span><span style="color: #007700">= </span><span style="color: #DD0000">"\x04\x00\xa0\x00"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$array </span><span style="color: #007700">= </span><span style="color: #0000BB">unpack</span><span style="color: #007700">(</span><span style="color: #DD0000">"c2chars/nint"</span><span style="color: #007700">, </span><span style="color: #0000BB">$binarydata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

     <div class="example-contents"><p>L&#039;exemple ci-dessus va afficher :</p></div>
     <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">Array
(
    [chars1] =&gt; 4
    [chars2] =&gt; 0
    [int] =&gt; 40960
)</pre>
</div>
     </div>
    </div>
   </p>
  </div>


 <div class="refsect1 notes" id="refsect1-function.unpack-notes">
  <h3 class="title">Notes</h3>
  <div class="caution"><strong class="caution">Attention</strong>
   <p class="para">
    Il faut noter que PHP gère les valeurs en interne
    sous forme signée. Si on déconditionne
    une valeur qui est aussi grande que la taille utilisée
    en interne par PHP, le résultat se trouvera être
    un nombre négatif, même s&#039;il a été
    déconditionné avec l&#039;option <code class="literal">&quot; non signé &quot;</code>.
   </p>
  </div>
  <div class="caution"><strong class="caution">Attention</strong>
   <p class="para">
    Si on ne nomme pas un élément, les index numériques à partir de
    <code class="literal">1</code> sont utilisés. Sachez que si on a plus d&#039;un
    élément sans nom, certaines données sont écrasées parce que la numérotation
    redémarre à partir de <code class="literal">1</code> pour chaque élément.
   </p>
   <p class="para">
    <div class="example" id="example-3">
     <p><strong>Exemple #3 Exemple avec <span class="function"><strong>unpack()</strong></span> avec des clés non nommées</strong></p>
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$binarydata </span><span style="color: #007700">= </span><span style="color: #DD0000">"\x32\x42\x00\xa0"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$array </span><span style="color: #007700">= </span><span style="color: #0000BB">unpack</span><span style="color: #007700">(</span><span style="color: #DD0000">"c2/n"</span><span style="color: #007700">, </span><span style="color: #0000BB">$binarydata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

     <div class="example-contents"><p>L&#039;exemple ci-dessus va afficher :</p></div>
     <div class="example-contents screen">
<div class="notescode"><pre class="notescode">array(2) {
  [1]=&gt;
  int(160)
  [2]=&gt;
  int(66)
}</pre>
</div>
     </div>
     <div class="example-contents"><p>
      À noter que la première
      valeur depuis le spécificateur <code class="literal">c</code> est écrasée
      par la première valeur depuis le spécificateur <code class="literal">n</code>.
     </p></div>
    </div>
   </p>
  </div>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.unpack-seealso">
  <h3 class="title">Voir aussi</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="function"><a href="function.pack.php" class="function" rel="rdfs-seeAlso">pack()</a> - Compacte des donn&eacute;es dans une cha&icirc;ne binaire</span></li>
   </ul>
  </p>
 </div>


</div><?php manual_footer($setup); ?>