PHP Conference Nagoya 2025

RarArchive::getEntries

rar_list

(PECL rar >= 2.0.0)

RarArchive::getEntries -- rar_listВозвращает полный список элементов из RAR архива

Описание

Объектно-ориентированный стиль (метод):

public RarArchive::getEntries(): array|false

Процедурный стиль:

rar_list(RarArchive $rarfile): array|false

Возвращает элементы (файлы и директории) из RAR архива.

Замечание:

Если архив имеет элементы с одинаковым именем, то этот метод совместно с циклом foreach по RarArchive и доступом к нему как к массиву с числовыми индексами являются единственными способами получить доступ к этим элементам (т.е. RarArchive::getEntry() и rar:// обработчик (wrapper) не помогут).

Список параметров

rarfile

Объект RarArchive открытый с помощью rar_open().

Возвращаемые значения

rar_list() возвращает массив объектов RarEntry или false, если возникла ошибка.

Список изменений

Версия Описание
PECL rar 3.0.0 Исправлена поддержка RAR архивов с повторяющимися именами элементов.

Примеры

Пример #1 Объектно-ориентированный стиль

<?php
$rar_arch
= RarArchive::open('solid.rar');
if (
$rar_arch === FALSE)
die(
"Не смог открыть RAR архив.");

$rar_entries = $rar_arch->getEntries();
if (
$rar_entries === FALSE)
die(
"Не смог достать содержимое.");

echo
"Нашёл " . count($rar_entries) . " объектов.\n";

foreach (
$rar_entries as $e) {
echo
$e;
echo
"\n";
}
$rar_arch->close();
?>

Вывод приведённого примера будет похож на:

Нашёл 2 объектов.
RarEntry for file "tese.txt" (23b93a7a)
RarEntry for file "unrardll.txt" (2ed64b6e)

Пример #2 Процедурный стиль

<?php
$rar_arch
= rar_open('solid.rar');
if (
$rar_arch === FALSE)
die(
"Could not open RAR archive.");

$rar_entries = rar_list($rar_arch);
if (
$rar_entries === FALSE)
die(
"Could retrieve entries.");

echo
"Found " . count($rar_entries) . " entries.\n";

foreach (
$rar_entries as $e) {
echo
$e;
echo
"\n";
}
rar_close($rar_arch);
?>

Смотрите также

Добавить

Примечания пользователей 2 notes

up
2
Anonymous
10 years ago
at the examples line 7 should be:
die("Could NOT retrieve entries.");
up
1
grap at hot dot ee
11 years ago
Can be usefult for many, probably:
<?php
$path
= 'path/to/archive';

$archive = RarArchive::open($path);
$list = $archive ->getEntries();
foreach (
$list as $entity) {
//print just title of file from archive(use getters to access other fields, etc)
echo $value->getName();
}
?>
To Top