PHP 8.4.2 Released!

RarEntry::extract

(PECL rar >= 0.1)

RarEntry::extractExtrai entrada do arquivo

Descrição

public RarEntry::extract(
    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.

Aviso

Antes da versão 2.0.0, esta função não tratava caminhos corretamente. Use realpath() como solução alternativa.

Valor Retornado

Retorna true em caso de sucesso ou false em caso de falha.

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

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

?>

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 2 notes

up
7
nelson_km_94 at hotmail dot com
9 years ago
Example #2 has a mistake.

This one works fine:
<?php

/* example by Erik Jenssen aka 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->getName());
$entry->extract("."); // extract to the current dir
}
rar_close($rar_file);

?>
up
0
Anonymous
11 years ago
If the entry to extract is a directory as per RarEntry::isDirectory(), this method does not seem to extract the entries below that directory as one might expect from using the command-line RAR or WinRAR.
To Top