RarEntry::extract
(PECL rar >= 0.1)
RarEntry::extract — Extrai entrada do arquivo
Descrição
string
$dir
,string
$filepath
= "",string
$password
= NULL,bool
$extended_data
= false
): bool
RarEntry::extract() extrai os dados da entrada.
Ele criará um novo arquivo no dir
especificado
com o nome idêntico ao nome da entrada,
a menos que o segundo argumento seja especificado. Veja abaixo para mais informações.
Parâmetros
dir
-
Caminho para o diretório onde os arquivos devem ser extraídos. Este parâmetro é considerado se e somente se
filepath
não for. Se ambos os parâmetros estiverem vazios, será tentada uma extração para o diretório atual. filepath
-
Caminho (relativo ou absoluto) contendo o diretório e o nome do arquivo extraído. Este parâmetro substitui o parâmetro
dir
e o nome do arquivo original. password
-
A senha usada para criptografar esta entrada. Se a entrada não estiver criptografada, este valor não será utilizado e poderá ser omitido. Se este parâmetro for omitido e a entrada for criptografada, será usada a senha fornecida para rar_open(), se houver. Se uma senha errada for fornecida, explícita ou implicitamente via rar_open(), a verificação CRC falhará e este método falhará e retornará
false
. Se nenhuma senha for fornecida e uma for necessária, este método falhará e retornaráfalse
. Você pode verificar se uma entrada está criptografada com RarEntry::isEncrypted(). extended_data
-
Se
true
, informações estendidas, como ACLs NTFS e informações do proprietário do Unix, serão definidas nos arquivos de extração, desde que estejam presentes no arquivo.
Antes da versão 2.0.0, esta função não tratava caminhos corretamente. Use realpath() como solução alternativa.
Registro de Alterações
Versão | Descrição |
---|---|
PECL rar 3.0.0 |
extended_data foi adicionado.
|
PECL rar 3.0.0 | O suporte para arquivos RAR com nomes de entrada repetidos não apresenta mais defeitos. |
Exemplos
Example #1 Exemplo de RarEntry::extract()
<?php
$rar_file = rar_open('example.rar') or die("Falha ao abrir arquivo Rar");
$entry = rar_entry_get($rar_file, 'Dir/arquivo.txt') or die("Falha ao pesquisar entrada");
$entry->extract('/dir/oara'); // cria /dir/para/Dir/arquivo.txt
$entry->extract(false, '/dir/para/novo_nome.txt'); // cria /dir/para/novo_nome.txt
?>
Example #2 Como extrair todos os arquivos do arquivo:
<?php
/* exemplo por Erik Jenssen também conhecido como erix */
$filename = "foobar.rar";
$filepath = "/home/foo/bar/";
$rar_file = rar_open($filepath.$filename);
$list = rar_list($rar_file);
foreach($list as $file) {
$entry = rar_entry_get($rar_file, $file);
$entry->extract("."); // extrai para o diretório atual
}
rar_close($rar_file);
?>