<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/class.rararchive.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'rararchive.open.php',
    1 => 'RarArchive::open',
    2 => 'Ouvre une archive RAR',
  ),
  'up' => 
  array (
    0 => 'class.rararchive.php',
    1 => 'RarArchive',
  ),
  'prev' => 
  array (
    0 => 'rararchive.issolid.php',
    1 => 'RarArchive::isSolid',
  ),
  'next' => 
  array (
    0 => 'rararchive.setallowbroken.php',
    1 => 'RarArchive::setAllowBroken',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/rar/rararchive/open.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="rararchive.open" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">RarArchive::open</h1>
  <h1 class="refname">rar_open</h1>
  <p class="verinfo">(PECL rar &gt;= 2.0.0)</p><p class="refpurpose"><span class="refname">RarArchive::open</span> -- <span class="refname">rar_open</span> &mdash; <span class="dc-title">Ouvre une archive RAR</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-rararchive.open-description">
  <h3 class="title">Description</h3>
  <p class="simpara">Style orienté objet (méthode) :</p>
  <div class="methodsynopsis dc-description">
   <span class="modifier">public</span> <span class="modifier">static</span> <span class="methodname"><strong>RarArchive::open</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$filename</code></span>, <span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$password</code><span class="initializer"> = NULL</span></span>, <span class="methodparam"><span class="type"><a href="language.types.callable.php" class="type callable">callable</a></span> <code class="parameter">$volume_callback</code><span class="initializer"> = NULL</span></span>): <span class="type"><span class="type"><a href="class.rararchive.php" class="type RarArchive">RarArchive</a></span>|<span class="type"><a href="language.types.singleton.php" class="type false">false</a></span></span></div>

  <p class="simpara">Style procédural :</p>
  <div class="methodsynopsis dc-description"><span class="methodname"><strong>rar_open</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$filename</code></span>, <span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$password</code><span class="initializer"> = NULL</span></span>, <span class="methodparam"><span class="type"><a href="language.types.callable.php" class="type callable">callable</a></span> <code class="parameter">$volume_callback</code><span class="initializer"> = NULL</span></span>): <span class="type"><span class="type"><a href="class.rararchive.php" class="type RarArchive">RarArchive</a></span>|<span class="type"><a href="language.types.singleton.php" class="type false">false</a></span></span></div>

  <p class="simpara">
   Ouvre une archive RAR et retourne une instance <span class="type"><a href="class.rararchive.php" class="type RarArchive">RarArchive</a></span> la représentant.
  </p>
  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <span class="simpara">
    Si on tente d&#039;ouvrir une archive multivolume, le chemin du premier volume
    doit être passé comme premier paramètre.
    Sinon, l&#039;ensemble des fichiers ne sera pas affiché.
   </span>
  </p></blockquote>
 </div>


 <div class="refsect1 parameters" id="refsect1-rararchive.open-parameters">
  <h3 class="title">Liste de paramètres</h3>
  <dl>
   
    <dt><code class="parameter">filename</code></dt>
    <dd>
     <span class="simpara">
      Chemin vers l&#039;archive Rar.
     </span>
    </dd>
   
   
    <dt><code class="parameter">password</code></dt>
    <dd>
     <span class="simpara">
      Un mot de passe en texte brut, si nécessaire pour déchiffrer l&#039;en-tête.
      Il sera également utilisé par défaut si des fichiers cryptés sont trouvés.
      Noter que les fichiers peuvent avoir un mot de passe différent, et ce,
      en respectant les en-têtes.
     </span>
    </dd>
   
   
    <dt><code class="parameter">volume_callback</code></dt>
    <dd>
     <span class="simpara">
      Une fonction qui reçoit un seul paramètre - le chemin du volume
      non trouvé - et retourne une <a href="language.types.string.php" class="link">chaîne de caractères</a> contenant le chemin correct
      du volume ou <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> si le volume n&#039;existe pas ou
      le chemin n&#039;est pas connu. Attention à ne pas créer de boucle infinie
      sachant que la fonction sera appelée indéfiniment si le chemin retourné
      dans un précédent appel ne correspond pas au volume désiré. Le fait de
      spécifier ce paramètre évitera une alerte qui devrait être émise lorsqu&#039;un
      volume n&#039;est pas trouvé ; une implémentation qui ne retourne que <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>
      peut toutefois être utilisée pour éviter une telle alerte.
     </span>
    </dd>
   
  </dl>
  <div class="warning"><strong class="warning">Avertissement</strong>
   <p class="simpara">
    Avant la version 2.0.0, cette fonction ne gérait pas correctement les
    chemins relatifs. Utiliser la fonction
    <span class="function"><a href="function.realpath.php" class="function">realpath()</a></span> pour corriger ce bogue.</p>
  </div>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-rararchive.open-returnvalues">
  <h3 class="title">Valeurs de retour</h3>
  <p class="simpara">
   Retourne l&#039;instance <span class="type"><a href="class.rararchive.php" class="type RarArchive">RarArchive</a></span> requise  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-rararchive.open-changelog">
  <h3 class="title">Historique</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Version</th>
      <th>Description</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>PECL rar 3.0.0</td>
      <td>
       Le paramètre <code class="parameter">volume_callback</code> a été ajouté.
      </td>
     </tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 examples" id="refsect1-rararchive.open-examples">
  <h3 class="title">Exemples</h3>
  <div class="example" id="example-1">
   <p><strong>Exemple #1 Style orienté objet</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$rar_arch </span><span style="color: #007700">= </span><span style="color: #0000BB">RarArchive</span><span style="color: #007700">::</span><span style="color: #0000BB">open</span><span style="color: #007700">(</span><span style="color: #DD0000">'encrypted_headers.rar'</span><span style="color: #007700">, </span><span style="color: #DD0000">'samplepassword'</span><span style="color: #007700">);<br />if (</span><span style="color: #0000BB">$rar_arch </span><span style="color: #007700">=== </span><span style="color: #0000BB">FALSE</span><span style="color: #007700">)<br />    die(</span><span style="color: #DD0000">"Échec lors de l'ouverture du fichier"</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$entries </span><span style="color: #007700">= </span><span style="color: #0000BB">$rar_arch</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getEntries</span><span style="color: #007700">();<br />if (</span><span style="color: #0000BB">$entries </span><span style="color: #007700">=== </span><span style="color: #0000BB">FALSE</span><span style="color: #007700">)<br />    die(</span><span style="color: #DD0000">"Échec lors de la récupération des entrées"</span><span style="color: #007700">);<br /><br />echo </span><span style="color: #0000BB">count</span><span style="color: #007700">(</span><span style="color: #0000BB">$entries</span><span style="color: #007700">) . </span><span style="color: #DD0000">" fichier(s) trouvé(s).\n"</span><span style="color: #007700">;<br /><br />if (empty(</span><span style="color: #0000BB">$entries</span><span style="color: #007700">))<br />    die(</span><span style="color: #DD0000">"Aucune entrée valide n'a été trouvée."</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$stream </span><span style="color: #007700">= </span><span style="color: #0000BB">reset</span><span style="color: #007700">(</span><span style="color: #0000BB">$entries</span><span style="color: #007700">)-&gt;</span><span style="color: #0000BB">getStream</span><span style="color: #007700">();<br />if (</span><span style="color: #0000BB">$stream </span><span style="color: #007700">=== </span><span style="color: #0000BB">FALSE</span><span style="color: #007700">)<br />    die(</span><span style="color: #DD0000">"Échec lors de l'ouverture du premier fichier"</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$rar_arch</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">close</span><span style="color: #007700">();<br /><br />echo </span><span style="color: #DD0000">"Contenu du premier fichier :\n"</span><span style="color: #007700">;<br />echo </span><span style="color: #0000BB">stream_get_contents</span><span style="color: #007700">(</span><span style="color: #0000BB">$stream</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">fclose</span><span style="color: #007700">(</span><span style="color: #0000BB">$stream</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   <div class="example-contents"><p>Résultat de l&#039;exemple ci-dessus est similaire à :</p></div>
   <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">2 fichier(s) trouvé(s).
Contenu du premier fichier :
Encrypted file 1 contents.</pre>
</div>
   </div>
  </div>
  <div class="example" id="example-2">
   <p><strong>Exemple #2 Style procédural</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$rar_arch </span><span style="color: #007700">= </span><span style="color: #0000BB">rar_open</span><span style="color: #007700">(</span><span style="color: #DD0000">'encrypted_headers.rar'</span><span style="color: #007700">, </span><span style="color: #DD0000">'samplepassword'</span><span style="color: #007700">);<br />if (</span><span style="color: #0000BB">$rar_arch </span><span style="color: #007700">=== </span><span style="color: #0000BB">FALSE</span><span style="color: #007700">)<br />    die(</span><span style="color: #DD0000">"Échec lors de l'ouverture du fichier"</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$entries </span><span style="color: #007700">= </span><span style="color: #0000BB">rar_list</span><span style="color: #007700">(</span><span style="color: #0000BB">$rar_arch</span><span style="color: #007700">);<br />if (</span><span style="color: #0000BB">$entries </span><span style="color: #007700">=== </span><span style="color: #0000BB">FALSE</span><span style="color: #007700">)<br />    die(</span><span style="color: #DD0000">"Échec lors de la récupération des entrées"</span><span style="color: #007700">);<br /><br />echo </span><span style="color: #0000BB">count</span><span style="color: #007700">(</span><span style="color: #0000BB">$entries</span><span style="color: #007700">) . </span><span style="color: #DD0000">" fichier(s) trouvé(s).\n"</span><span style="color: #007700">;<br /><br />if (empty(</span><span style="color: #0000BB">$entries</span><span style="color: #007700">))<br />    die(</span><span style="color: #DD0000">"Aucune entrée valide n'a été trouvée."</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$stream </span><span style="color: #007700">= </span><span style="color: #0000BB">reset</span><span style="color: #007700">(</span><span style="color: #0000BB">$entries</span><span style="color: #007700">)-&gt;</span><span style="color: #0000BB">getStream</span><span style="color: #007700">();<br />if (</span><span style="color: #0000BB">$stream </span><span style="color: #007700">=== </span><span style="color: #0000BB">FALSE</span><span style="color: #007700">)<br />    die(</span><span style="color: #DD0000">"Échec lors de l'ouverture du premier fichier"</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">rar_close</span><span style="color: #007700">(</span><span style="color: #0000BB">$rar_arch</span><span style="color: #007700">);<br /><br />echo </span><span style="color: #DD0000">"Contenu du premier fichier :\n"</span><span style="color: #007700">;<br />echo </span><span style="color: #0000BB">stream_get_contents</span><span style="color: #007700">(</span><span style="color: #0000BB">$stream</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">fclose</span><span style="color: #007700">(</span><span style="color: #0000BB">$stream</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
  <div class="example" id="example-3">
   <p><strong>Exemple #3 Fonction de rappel pour le volume</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">/* Dans cet exemple, il y a un volume nommé multi_broken.part1.rar<br /> * dont le volume suivant est nommé multi.part2.rar */<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">resolve</span><span style="color: #007700">(</span><span style="color: #0000BB">$vol</span><span style="color: #007700">) {<br />    if (</span><span style="color: #0000BB">preg_match</span><span style="color: #007700">(</span><span style="color: #DD0000">'/_broken/'</span><span style="color: #007700">, </span><span style="color: #0000BB">$vol</span><span style="color: #007700">))<br />        return </span><span style="color: #0000BB">str_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">'_broken'</span><span style="color: #007700">, </span><span style="color: #DD0000">''</span><span style="color: #007700">, </span><span style="color: #0000BB">$vol</span><span style="color: #007700">);<br />    else<br />        return </span><span style="color: #0000BB">null</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">$rar_file1 </span><span style="color: #007700">= </span><span style="color: #0000BB">rar_open</span><span style="color: #007700">(</span><span style="color: #0000BB">dirname</span><span style="color: #007700">(</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">).</span><span style="color: #DD0000">'/multi_broken.part1.rar'</span><span style="color: #007700">, </span><span style="color: #0000BB">null</span><span style="color: #007700">, </span><span style="color: #DD0000">'resolve'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$entry </span><span style="color: #007700">= </span><span style="color: #0000BB">$rar_file1</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getEntry</span><span style="color: #007700">(</span><span style="color: #DD0000">'file2.txt'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$entry</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">extract</span><span style="color: #007700">(</span><span style="color: #0000BB">null</span><span style="color: #007700">, </span><span style="color: #0000BB">dirname</span><span style="color: #007700">(</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">) . </span><span style="color: #DD0000">"/temp_file2.txt"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </div>


 <div class="refsect1 seealso" id="refsect1-rararchive.open-seealso">
  <h3 class="title">Voir aussi</h3>
  <ul class="simplelist">
   <li>Le gestionnaire <a href="wrappers.rar.php" class="link"><code class="literal">rar://</code></a></li>
  </ul>
 </div>



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