<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/wrappers.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'wrappers.rar.php',
    1 => 'rar://',
    2 => 'RAR',
  ),
  'up' => 
  array (
    0 => 'wrappers.php',
    1 => 'Protocolos e empacotadores suportados',
  ),
  'prev' => 
  array (
    0 => 'wrappers.ssh2.php',
    1 => 'ssh2://',
  ),
  'next' => 
  array (
    0 => 'wrappers.audio.php',
    1 => 'ogg://',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'pt_BR',
    'path' => 'language/wrappers/rar.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="wrappers.rar" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">rar://</h1>
  <p class="refpurpose"><span class="refname">rar://</span> &mdash; <span class="dc-title">RAR</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-wrappers.rar-description">
  <h3 class="title">Descrição</h3>
  <p class="para">
   Este empacotador usa o caminho para o arquivo RAR (relativo ou absoluto) codificado em url,
   um asterisco opcional (<code class="literal">*</code>), um símbolo de número opcional
   (<code class="literal">#</code>) e uma entrada de nome opcional codificada em url, como armazenado no
   arquivo. Especificar uma entrada de nome requer o símbolo de número; Uma barra (/) no início
   da entrada de nome é opcional.
  </p>

  <p class="simpara">
   Este empacotador pode abrir tanto arquivos quanto diretórios. Quando abre diretórios,
   o asterisco força o retorno não codificado dos nomes das entradas do diretório. Se não houver
   asterisco, eles serão retornados com codificação url – a razão para isto é permitir
   que o empacotador seja usado corretamente com funcionalidades internas como
   <span class="classname"><a href="class.recursivedirectoryiterator.php" class="classname">RecursiveDirectoryIterator</a></span> na presença de nomes de arquivo que se parecem
   com dados codificados de url.
  </p>

  <p class="simpara">
   Se o símbolo de número (#) e a parte de nome de entrada não forem incluídos, a raiz dos arquivos
   será mostrada. Isto difere de diretórios comuns pelo fato que o fluxo
   resultante não conterá informações como horário de modificação, já que o diretório
   raiz não é armazenado em uma entrada individual no arquivo.
   O uso do empacotador com <span class="classname"><a href="class.recursivedirectoryiterator.php" class="classname">RecursiveDirectoryIterator</a></span> requer
   que o símbolo de número seja incluído na URL ao acessar a raiz, para que as
   URLs dos ramos filhos sejam construídos corretamente.
  </p>
  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <strong>Este empacotador não é habilitado por padrão</strong><br />
   <span class="simpara">
    Para usar o empacotador <var class="filename">rar://</var>,
    a extensão
    <a href="https://pecl.php.net/package/rar" class="link external">&raquo;&nbsp;rar</a>
    disponível em <a href="https://pecl.php.net/" class="link external">&raquo;&nbsp;PECL</a> deve ser instalada.
   </span>
  </p></blockquote>
  <p class="simpara">
   <var class="filename">rar://</var>
   Disponível desde o PECL rar 3.0.0
  </p>

 </div>


 <div class="refsect1 usage" id="refsect1-wrappers.rar-usage"> 
  <h3 class="title">Uso</h3>
  <ul class="itemizedlist">
   <li class="listitem"><span class="simpara"><var class="filename">rar://&lt;nome de arquivo codificado como url&gt;[*][#[&lt;nome de entrada codificado como url&gt;]]</var></span></li>
  </ul>
 </div>
 

 <div class="refsect1 options" id="refsect1-wrappers.rar-options">
  <h3 class="title">Opções</h3>
  <p class="para">
   <table class="doctable table">
    <caption><strong>Sumário do Empacotador</strong></caption>
    
     <thead>
      <tr>
       <th>Atributo</th>
       <th>Suportado</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>Restrito por <a href="filesystem.configuration.php#ini.allow-url-fopen" class="link">allow_url_fopen</a></td>
       <td>Não</td>
      </tr>

      <tr>
       <td>Restrito por <a href="filesystem.configuration.php#ini.allow-url-include" class="link">allow_url_include</a></td>
       <td>Não</td>
      </tr>

      <tr>
       <td>Permite Leitura</td>
       <td>Sim</td>
      </tr>

      <tr>
       <td>Permite Escrita</td>
       <td>Não</td>
      </tr>

      <tr>
       <td>Permite Adição</td>
       <td>Não</td>
      </tr>

      <tr>
       <td>Permite Leitura e Escrita Simultâneas</td>
       <td>Não</td>
      </tr>

      <tr>
       <td>Suporta <span class="function"><a href="function.stat.php" class="function">stat()</a></span></td>
       <td>Sim</td>
      </tr>

      <tr>
       <td>Suporta <span class="function"><a href="function.unlink.php" class="function">unlink()</a></span></td>
       <td>Não</td>
      </tr>

      <tr>
       <td>Suporta <span class="function"><a href="function.rename.php" class="function">rename()</a></span></td>
       <td>Não</td>
      </tr>

      <tr>
       <td>Suporta <span class="function"><a href="function.mkdir.php" class="function">mkdir()</a></span></td>
       <td>Não</td>
      </tr>

      <tr>
       <td>Suporta <span class="function"><a href="function.rmdir.php" class="function">rmdir()</a></span></td>
       <td>Não</td>
      </tr>

     </tbody>
    
   </table>

  </p>

  
  <p class="para">
   <table class="doctable table">
    <caption><strong>Opções de contexto</strong></caption>
    
     <thead>
      <tr>
       <th>Nome</th>
       <th>Uso</th>
       <th>Padrão</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td><code class="literal">open_password</code></td>
       <td>A senha utilizada para criptografar os cabeçalhos do arquivo,
       se houver. WinRAR irá criptografar todos os arquivos com a mesma senha
       do cabeçalho quando ela estiver presente, ou seja, para arquivos
       com cabeçalhos criptografados, <code class="literal">file_password</code> será
       ignorada.
       </td>
       <td class="empty">&nbsp;</td>
      </tr>

      <tr>
       <td><code class="literal">file_password</code></td>
       <td>A senha utilizada para criptografar um arquivo, se houver. Se os cabeçalhos
       também estiverem criptografados, esta opção será ignorada em favor de
       <code class="literal">open_password</code>. A razão pela qual existem duas opções
       é para cobrir a possibilidade de suportar arquivos com senhas diferentes
       para cabeçalhos e arquivos, se este tipo de arquivo porventura vier a existir. Note que
       se o arquivo não tiver seus cabeçalhos criptografados,
       <code class="literal">open_password</code> será ignorada e esta opção deve
       ser usada no lugar.
       </td>
       <td class="empty">&nbsp;</td>
      </tr>

      <tr>
       <td><code class="literal">volume_callback</code></td>
       <td>Um callback para determinar o caminho de volumes faltantes. Consulte
        <span class="methodname"><a href="rararchive.open.php" class="methodname">RarArchive::open()</a></span> para mais informação.
       </td>
       <td class="empty">&nbsp;</td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>
 

 <div class="refsect1 examples" id="refsect1-wrappers.rar-examples">
  <h3 class="title">Exemplos</h3>
  <div class="example" id="example-1">
   <p><strong>Exemplo #1 Explorando um arquivo RAR</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">class </span><span style="color: #0000BB">MyRecDirIt </span><span style="color: #007700">extends </span><span style="color: #0000BB">RecursiveDirectoryIterator </span><span style="color: #007700">{<br />    function </span><span style="color: #0000BB">current</span><span style="color: #007700">() {<br />        return </span><span style="color: #0000BB">rawurldecode</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getSubPathName</span><span style="color: #007700">()) .<br />            (</span><span style="color: #0000BB">is_dir</span><span style="color: #007700">(</span><span style="color: #0000BB">parent</span><span style="color: #007700">::</span><span style="color: #0000BB">current</span><span style="color: #007700">())?</span><span style="color: #DD0000">" [DIR]"</span><span style="color: #007700">:</span><span style="color: #DD0000">""</span><span style="color: #007700">);<br />    }<br />}<br /><br /></span><span style="color: #0000BB">$f </span><span style="color: #007700">= </span><span style="color: #DD0000">"rar://" </span><span style="color: #007700">. </span><span style="color: #0000BB">rawurlencode</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">)) .<br />    </span><span style="color: #0000BB">DIRECTORY_SEPARATOR </span><span style="color: #007700">. </span><span style="color: #DD0000">'dirs_and_extra_headers.rar#'</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">$it </span><span style="color: #007700">= new </span><span style="color: #0000BB">RecursiveTreeIterator</span><span style="color: #007700">(new </span><span style="color: #0000BB">MyRecDirIt</span><span style="color: #007700">(</span><span style="color: #0000BB">$f</span><span style="color: #007700">));<br /><br />foreach (</span><span style="color: #0000BB">$it </span><span style="color: #007700">as </span><span style="color: #0000BB">$s</span><span style="color: #007700">) {<br />    echo </span><span style="color: #0000BB">$s</span><span style="color: #007700">, </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

    <div class="example-contents"><p>O exemplo acima produzirá
algo semelhante a:</p></div>
    <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">|-allow_everyone_ni [DIR]
|-file1.txt
|-file2_אּ.txt
|-with_streams.txt
\-אּ [DIR]
  |-אּ\%2Fempty%2E [DIR]
  | \-אּ\%2Fempty%2E\file7.txt
  |-אּ\empty [DIR]
  |-אּ\file3.txt
  |-אּ\file4_אּ.txt
  \-אּ\אּ_2 [DIR]
    |-אּ\אּ_2\file5.txt
    \-אּ\אּ_2\file6_אּ.txt</pre>
</div>
   </div>
  </div>
  <div class="example" id="example-2">
   <p><strong>Exemplo #2 Abrindo um arquivo criptografado (criptografia de cabeçalho)</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$stream </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">"rar://" </span><span style="color: #007700">.<br />    </span><span style="color: #0000BB">rawurlencode</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: #0000BB">DIRECTORY_SEPARATOR </span><span style="color: #007700">.<br />    </span><span style="color: #DD0000">'encrypted_headers.rar' </span><span style="color: #007700">. </span><span style="color: #DD0000">'#encfile1.txt'</span><span style="color: #007700">, </span><span style="color: #DD0000">"r"</span><span style="color: #007700">, </span><span style="color: #0000BB">false</span><span style="color: #007700">,<br />    </span><span style="color: #0000BB">stream_context_create</span><span style="color: #007700">(<br />        array(<br />            </span><span style="color: #DD0000">'rar' </span><span style="color: #007700">=&gt;<br />                array(<br />                    </span><span style="color: #DD0000">'open_password' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'samplepassword'<br />                </span><span style="color: #007700">)<br />            )<br />        )<br />    );<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</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 /></span><span style="color: #FF8000">/* datas de criação e de último acesso são opcionais no WinRAR, por isso a maioria<br /> * dos arquivos não as possui */<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">fstat</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>O exemplo acima produzirá
algo semelhante a:</p></div>
    <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">string(26) &quot;Encrypted file 1 contents.&quot;
Array
(
    [0] =&gt; 0
    [1] =&gt; 0
    [2] =&gt; 33206
    [3] =&gt; 1
    [4] =&gt; 0
    [5] =&gt; 0
    [6] =&gt; 0
    [7] =&gt; 26
    [8] =&gt; 0
    [9] =&gt; 1259550052
    [10] =&gt; 0
    [11] =&gt; -1
    [12] =&gt; -1
    [dev] =&gt; 0
    [ino] =&gt; 0
    [mode] =&gt; 33206
    [nlink] =&gt; 1
    [uid] =&gt; 0
    [gid] =&gt; 0
    [rdev] =&gt; 0
    [size] =&gt; 26
    [atime] =&gt; 0
    [mtime] =&gt; 1259550052
    [ctime] =&gt; 0
    [blksize] =&gt; -1
    [blocks] =&gt; -1
)</pre>
</div>
   </div>
  </div>
 </div>


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