<?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 => 'de',
  ),
  'this' => 
  array (
    0 => 'wrappers.rar.php',
    1 => 'rar://',
    2 => 'RAR',
  ),
  'up' => 
  array (
    0 => 'wrappers.php',
    1 => 'Unterst&uuml;tzte Protokolle und Wrapper',
  ),
  'prev' => 
  array (
    0 => 'wrappers.ssh2.php',
    1 => 'ssh2://',
  ),
  'next' => 
  array (
    0 => 'wrappers.audio.php',
    1 => 'ogg://',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    '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">Beschreibung</h3>
  <p class="para">
   Der Wrapper akzeptiert den URL-kodierten Pfad zum RAR-Archiv (relativ oder
   absolut), ein optionales Sternchen (<code class="literal">*</code>), ein optionales
   Nummernzeichen (<code class="literal">#</code>) und optional den URL-kodierten Namen
   des Eintrags, wie er im Archiv gespeichert ist. Bei Angabe eines
   Eintragsnamens muss das Nummernzeichen angegeben werden; ein führender
   Schrägstrich im Eintragsnamen ist optional.
  </p>

  <p class="simpara">
   Mit diesem Wrapper können sowohl Dateien als auch Verzeichnisse geöffnet
   werden. Beim Öffnen eines Verzeichnisses erzwingt das Sternchen, dass der
   Name des Verzeichniseintrags unkodiert zurückgegeben wird. Wenn es nicht
   angegeben ist, wird er URL-kodiert zurückgegeben. Damit soll sichergestellt
   werden, dass der Wrapper korrekt mit eingebauten Funktionen wie dem
   <span class="classname"><a href="class.recursivedirectoryiterator.php" class="classname">RecursiveDirectoryIterator</a></span> verwendet werden kann,
   wenn der Dateiname nach URL-kodierten Daten aussieht.
  </p>

  <p class="simpara">
   Wenn der Teil mit dem Nummernsymbol und dem Eintragsnamen nicht angegeben
   wird, wird das Stammverzeichnis des Archivs angezeigt. Der Unterschied zu
   normalen Verzeichnissen besteht darin, dass der resultierende Stream keine
   Informationen wie z. B. die Änderungszeit enthält, weil das Stammverzeichnis
   nicht in als separater Eintrag im Archivs gespeichert ist. Wenn der Wrapper
   mit <span class="classname"><a href="class.recursivedirectoryiterator.php" class="classname">RecursiveDirectoryIterator</a></span> verwendet werden
   soll, muss die URL das Nummernsymbol enthalten, damit die URLs der
   Unterverzeichnisse korrekt erstellt werden können.
  </p>
  <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
   <strong>Dieser Wrapper ist standardmäßig nicht aktiviert</strong><br />
   <span class="simpara">
    Um den Wrapper <var class="filename">rar://</var> verwenden zu können, muss die
    <a href="https://pecl.php.net/package/rar" class="link external">&raquo;&nbsp;rar</a>-Erweiterung von
    <a href="https://pecl.php.net/" class="link external">&raquo;&nbsp;PECL</a> installiert werden
   </span>
  </p></blockquote>
  <p class="simpara">
   <var class="filename">rar://</var>
   Available since PECL rar 3.0.0
  </p>

 </div>


 <div class="refsect1 usage" id="refsect1-wrappers.rar-usage"> 
  <h3 class="title">Verwendung</h3>
  <ul class="itemizedlist">
   <li class="listitem"><span class="simpara"><var class="filename">rar://&lt;URL-kodierter Name des Archivs&gt;[*][#[&lt;URL-kodierter Name des Eintrags&gt;]]</var></span></li>
  </ul>
 </div>
 

 <div class="refsect1 options" id="refsect1-wrappers.rar-options">
  <h3 class="title">Optionen</h3>
  <p class="para">
   <table class="doctable table">
    <caption><strong>Zusammenfassung des Wrappers</strong></caption>
    
     <thead>
      <tr>
       <th>Eigenschaft</th>
       <th>wird unterstützt</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>Eingeschränkt durch <a href="filesystem.configuration.php#ini.allow-url-fopen" class="link">allow_url_fopen</a></td>
       <td>Nein</td>
      </tr>

      <tr>
       <td>Eingeschränkt durch <a href="filesystem.configuration.php#ini.allow-url-include" class="link">allow_url_include</a></td>
       <td>Nein</td>
      </tr>

      <tr>
       <td>Erlaubt Lesen</td>
       <td>Ja</td>
      </tr>

      <tr>
       <td>Erlaubt Schreiben</td>
       <td>Nein</td>
      </tr>

      <tr>
       <td>Erlaubt Anfügen</td>
       <td>Nein</td>
      </tr>

      <tr>
       <td>Erlaubt gleichzeitiges Lesen und Schreiben</td>
       <td>Nein</td>
      </tr>

      <tr>
       <td>Unterstützt <span class="function"><a href="function.stat.php" class="function">stat()</a></span></td>
       <td>Ja</td>
      </tr>

      <tr>
       <td>Unterstützt <span class="function"><a href="function.unlink.php" class="function">unlink()</a></span></td>
       <td>Nein</td>
      </tr>

      <tr>
       <td>Unterstützt <span class="function"><a href="function.rename.php" class="function">rename()</a></span></td>
       <td>Nein</td>
      </tr>

      <tr>
       <td>Unterstützt <span class="function"><a href="function.mkdir.php" class="function">mkdir()</a></span></td>
       <td>Nein</td>
      </tr>

      <tr>
       <td>Unterstützt <span class="function"><a href="function.rmdir.php" class="function">rmdir()</a></span></td>
       <td>Nein</td>
      </tr>

     </tbody>
    
   </table>

  </p>

  
  <p class="para">
   <table class="doctable table">
    <caption><strong>Kontextoptionen</strong></caption>
    
     <thead>
      <tr>
       <th>Name</th>
       <th>Verwendung</th>
       <th>Voreinstellung</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td><code class="literal">open_password</code></td>
       <td>
        Das Passwort, mit dem die Header des Archivs verschlüsselt werden,
        falls vorhanden. WinRAR verschlüsselt alle Dateien mit dem für die
        Header verwendeten Passwort, falls dieses vorhanden ist; bei Archiven
        mit verschlüsselten Headern wird <code class="literal">file_password</code> also
        ignoriert.
       </td>
       <td class="empty">&nbsp;</td>
      </tr>

      <tr>
       <td><code class="literal">file_password</code></td>
       <td>
        Das zur Verschlüsselung einer Datei verwendete Passwort, falls
        vorhanden. Wenn die Header ebenfalls verschlüsselt sind, wird diese
        Option zugunsten von <code class="literal">open_password</code> ignoriert. Es
        gibt diese beiden Optionen, damit auch Archive mit verschiedenen
        Header- und Dateipasswörtern unterstützt werden können, falls es
        solche Archive geben sollte. Wenn die Header des Archivs nicht
        verschlüsselt sind, wird <code class="literal">open_password</code> ignoriert
        und stattdessen muss diese Option verwendet werden.
       </td>
       <td class="empty">&nbsp;</td>
      </tr>

      <tr>
       <td><code class="literal">volume_callback</code></td>
       <td>
        Ein Callback, mit dem der Pfad von fehlenden Archiv-Volumes ermittelt
        werden kann. Siehe <span class="methodname"><a href="rararchive.open.php" class="methodname">RarArchive::open()</a></span> für
        weitere Informationen.
       </td>
       <td class="empty">&nbsp;</td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>
 

 <div class="refsect1 examples" id="refsect1-wrappers.rar-examples">
  <h3 class="title">Beispiele</h3>
  <div class="example" id="example-1">
   <p><strong>Beispiel #1 Durchlaufen eines RAR-Archivs</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>Das oben gezeigte Beispiel erzeugt
eine ähnliche Ausgabe wie:</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>Beispiel #2 Öffnen einer verschlüsselten Datei (Header-Verschlüsselung)</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">/* Erstellungsdatum und Datum des letzten Zugriffs sind in WinRAR optional,<br /> * weshalb diese Angaben bei den meisten Dateien fehlen */<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>Das oben gezeigte Beispiel erzeugt
eine ähnliche Ausgabe wie:</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); ?>