(PECL rar >= 2.0.0)
RarArchive::open -- rar_open — Открывает RAR архив
Объектно-ориентированный стиль (method):
$filename
   [, string $password = NULL
   [, callable $volume_callback = NULL
   ]] )Процедурный стиль:
$filename
   [, string $password = NULL
   [, callable $volume_callback = NULL
  ]] )Открывает указанный RAR архив и возвращает объект RarArchive, представляющий его.
Замечание:
При открытии многотомного архива путь к первому тому должен быть передан первым параметром. Иначе не будут видны все файлы.
filenameПуть к Rar архиву.
passwordПароль, если необходимо расшифровать заголовки архива. Этот же пароль будет использоваться по умолчанию, если будут найдены зашифрованные файлы. Учтите, что файлы могут быть зашифрованы с разными паролями.
volume_callback
       Функция, которой передается единственный параметр - 
       путь к тому, который не был найден, и возвращающая строку
       с правильным путем для этого тома или NULL, если данный
       том не существует или неизвестен. Разработчик должен быть уверен,
       что данная функция не приведет к зацикливанию, так как она 
       вызывается повторно, если путь полученный предыдущим вызовом 
       не соответствует нужному тому. Указание этого параметра
       устраняет предупреждения, которые появлялись бы, если бы 
       том не был бы найден. В случае, если функция возвращает 
       только NULL, то не будет ни одного предупреждения.
      
До версии 2.0.0 эта функция не обрабатывала правильно относительные пути. В таких случаях используйте realpath().
   Возвращает запрашиваемый объект RarArchive 
    или FALSE в случае возникновения ошибки.
  
| Версия | Описание | 
|---|---|
| 3.0.0 | 
        Был добавлен volume_callback.
        | 
      
Пример #1 Объектно-ориентированный стиль
<?php
$rar_arch = RarArchive::open('encrypted_headers.rar', 'samplepassword');
if ($rar_arch === FALSE)
    die("Failed opening file");
    
$entries = $rar_arch->getEntries();
if ($entries === FALSE)
    die("Failed fetching entries");
echo "Found " . count($entries) . " files.\n";
if (empty($entries))
    die("No valid entries found.");
    
$stream = reset($entries)->getStream();
if ($stream === FALSE)
    die("Failed opening first file");
$rar_arch->close();
echo "Content of first one follows:\n";
echo stream_get_contents($stream);
fclose($stream);
?>
Результатом выполнения данного примера будет что-то подобное:
Found 2 files. Content of first one follows: Encrypted file 1 contents.
Пример #2 Процедурный стиль
<?php
$rar_arch = rar_open('encrypted_headers.rar', 'samplepassword');
if ($rar_arch === FALSE)
    die("Failed opening file");
    
$entries = rar_list($rar_arch);
if ($entries === FALSE)
    die("Failed fetching entries");
echo "Found " . count($entries) . " files.\n";
if (empty($entries))
    die("No valid entries found.");
    
$stream = reset($entries)->getStream();
if ($stream === FALSE)
    die("Failed opening first file");
rar_close($rar_arch);
echo "Content of first one follows:\n";
echo stream_get_contents($stream);
fclose($stream);
?>
Пример #3 Volume Callback
<?php
/* В этом примере есть том с именем multi_broken.part1.rar
 * а следующий том имеет имя  multi.part2.rar */
function resolve($vol) {
    if (preg_match('/_broken/', $vol))
        return str_replace('_broken', '', $vol);
    else
        return null;
}
$rar_file1 = rar_open(dirname(__FILE__).'/multi_broken.part1.rar', null, 'resolve');
$entry = $rar_file1->getEntry('file2.txt');
$entry->extract(null, dirname(__FILE__) . "/temp_file2.txt");
?>