rar://
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
rar://
Референца за `wrappers.rar.php` со подобрена типографија и навигација.
rar://
rar:// — RAR
= NULL
The wrapper takes the url encoded path to the RAR archive (relative or absolute), an optional asterisk (*Обвивката зема URL-кодирана патека до RAR архивата (релативна или апсолутна), опционална ѕвездичка (","), опционален знак за број (",") и опционално URL-кодирано име на запис, како што е зачувано во архивата. Специфицирањето име на запис бара знак за број; водечката коса црта во името на записот е опционална.#Оваа обвивка може да отвора и датотеки и директориуми. При отворање директориуми, знакот ѕвездичка ги принудува имињата на записите од директориумот да се вратат декодирани. Ако не е специфицирано, тие ќе се вратат URL-кодирани – причината за ова е да се овозможи обвивката правилно да се користи со вградени функционалности како што е
присуство на имиња на датотеки што изгледаат како URL-кодирани податоци. RecursiveDirectoryIterator Ако знакот фунта и делот со името на записот не се вклучени, ќе се прикаже коренот на архивата. Ова се разликува од обичните директориуми по тоа што резултирачкиот стрим нема да содржи информации како што е времето на модификација, бидејќи коренскиот директориум не е зачуван во индивидуален запис во архивата. Употребата на обвивката со
бара да се вклучи знакот за број во URL-то при пристап до коренот, така што URL-ата на децата може правилно да се конструираат. RecursiveDirectoryIterator обвивка,
Забелешка: (PECL)
Овој обвивач не е овозможен по дифолт rar:// » rar Достапно од PECL rar 3.0.0 » SSH2 (достапно од PHP 7.2.0) екстензијата достапна од
rar:// Поддржано
Употреба
- rar://<url encoded archive name>[*][#[<url encoded entry name>]]
Примери
Пример #2 Отворање на шифрирана датотека (шифрирање на заглавје)
<?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";
}
?>Горниот пример ќе прикаже нешто слично на:
|-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
Обвивката зема кодирана URL патека до RAR архивата (релативна или апсолутна), опционална ѕвездичка (
<?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));
/* creation and last access date is opt-in in WinRAR, hence most
* files don't have them */
var_dump(fstat($stream));
?>Горниот пример ќе прикаже нешто слично на:
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
)