(PECL rar >= 0.1)
RarEntry::extract — Extrai entrada do arquivo
$dir
,$filepath
= "",$password
= NULL,$extended_data
= false
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.
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.
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. |
Exemplo #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
?>
Exemplo #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);
?>