rar://

rar://RAR

Açıklama

Sarmalayıcı, arşivde depolandığı şekliyle, RAR arşivi için URL kodlu yol (göreli veya mutlak), isteğe bağlı bir yıldız işareti (*), isteğe bağlı bir diyez işareti (#) ve isteğe bağlı bir url kodlu girdi adı alır. Bir girdi adı belirtmek, numara işaretini gerektirir; girdi adında önde bir eğik çizgi isteğe bağlıdır.

Bu sarmalayıcı hem dosyaları hem de dizinleri açabilir. Dizinleri açarken, yıldız işareti dizin girdilerinin adlarını kodlanmamış olarak döndürülmeye zorlar. Belirtilmezse, URL olarak kodlanmış biçimde döndürülür - bunun nedeni, URL kodlu veriler gibi görünen dosya adlarının varlığında sarmalayıcının RecursiveDirectoryIterator gibi yerleşik işlevsellik ile doğru şekilde kullanılmasını sağlamaktır.

Diyez işareti ve girdi adı kısmı dahil edilmemişse, arşivin kökü gösterilir. Bu, kök dizin arşivdeki tek bir girdide depolanmadığından normal dizinlerden farklıdır, çünkü ortaya çıkan akım değişiklik zamanı gibi bilgileri içermez. RecursiveDirectoryIterator ile sarmalayıcının kullanımı, alt öğelerin URL'lerinin doğru bir şekilde yapılandırılabilmesi için, köke erişirken diyez işaretinin URL'ye dahil edilmesini gerektirir.

Bilginize: Bu sarmalayıcı öntanımlı olarak etkin değildir
rar:// sarmalayıcısını kullanmak için, » PECL'de bulunan » rar eklentisinin kurulması gerekir.

rar:// PECL rar 3.0.0'dan beri kullanılabilmektedir.

Kullanımı

  • rar://<url kodlu arşiv ismi>[*][#[<url kodlu girdi ismi>]]

Seçenekler

Sarmalayıcı Özeti
Özellik Destek
allow_url_fopen ile sınırlı Hayır
allow_url_include ile sınırlı Hayır
Okuma izni Evet
Yazma izni Hayır
Ekleme izni Hayır
Aynı anda okuma ve yazma izni Hayır
stat() desteği Evet
unlink() desteği Hayır
rename() desteği Hayır
mkdir() desteği Hayır
rmdir() desteği Hayır

Bağlam Seçenekleri
İsim Kullanım Öntanımlı
open_password Varsa, arşivin başlıklarını şifrelemek için kullanılan parola. WinRAR, daha sonra mevcut olduğunda başlık parolası ile aynı parolaya sahip tüm dosyaları şifreleyecektir, bu nedenle şifrelenmiş başlıklara sahip arşivler için file_password göz ardı edilecektir.  
file_password Varsa, bir dosyayı şifrelemek için kullanılan parola. Başlıklar da şifrelenmişse, bu seçenek open_password lehine göz ardı edilecektir. İki seçeneğin olmasının nedeni, arşivlerin ortaya çıkması durumunda farklı başlık ve dosya şifrelerine sahip arşivleri destekleme olasılığını elde tutmaktır. Arşivin başlıkları şifrelenmemişse, open_password'un yok sayılacağını ve onun yerine bu seçeneğin kullanılmasının gerektiği unutulmamalıdır.  
volume_callback Eksik bölümlerin yolunu belirlemek için bir geriçağırım. Daha fazla bilgi için bkz. RarArchive::open().  

Örnekler

Örnek 1 - Bir RAR arşinde gezinmek

<?php

class MyRecDirIt extends RecursiveDirectoryIterator {
function
current() {
return
rawurldecode($this->getSubPathName()) .
(
is_dir(parent::current())?" [DIR]":"");
}
}

$f = "rar://" . rawurlencode(dirname(__FILE__)) .
DIRECTORY_SEPARATOR . 'dirs_and_extra_headers.rar#';

$it = new RecursiveTreeIterator(new MyRecDirIt($f));

foreach (
$it as $s) {
echo
$s, "\n";
}
?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

|-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

Örnek 2 - Şifreli bir dosyanın açılması (başlık şifreleme)

<?php
$stream
= fopen("rar://" .
rawurlencode(dirname(__FILE__)) . DIRECTORY_SEPARATOR .
'encrypted_headers.rar' . '#encfile1.txt', "r", false,
stream_context_create(
array(
'rar' =>
array(
'open_password' => 'samplepassword'
)
)
)
);
var_dump(stream_get_contents($stream));
/* çoğu dosyanın sahip olmadığı oluşturma ve
* son erişim tarihi WinRAR'a dahil edilmiştir
*/
var_dump(fstat($stream));
?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

string(26) "Encrypted file 1 contents."
Array
(
    [0] => 0
    [1] => 0
    [2] => 33206
    [3] => 1
    [4] => 0
    [5] => 0
    [6] => 0
    [7] => 26
    [8] => 0
    [9] => 1259550052
    [10] => 0
    [11] => -1
    [12] => -1
    [dev] => 0
    [ino] => 0
    [mode] => 33206
    [nlink] => 1
    [uid] => 0
    [gid] => 0
    [rdev] => 0
    [size] => 26
    [atime] => 0
    [mtime] => 1259550052
    [ctime] => 0
    [blksize] => -1
    [blocks] => -1
)
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top