2024 年日本 PHP 研討會

ZipArchive::getFromName

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.1.0)

ZipArchive::getFromName使用名稱返回項目內容

說明

public ZipArchive::getFromName(字串 $name, 整數 $len = 0, 整數 $flags = 0): 字串|false

透過名稱返回項目內容。

參數

name

項目的名稱

len

要從項目中讀取的長度。如果為 0,則讀取整個項目。

flags

用於尋找項目的旗標。下列值可以使用 OR 運算結合。

回傳值

成功時返回項目的內容,失敗時返回 false

範例

範例 #1 取得檔案內容

<?php
$zip
= new ZipArchive;
if (
$zip->open('test1.zip') === TRUE) {
echo
$zip->getFromName('testfromfile.php');
$zip->close();
} else {
echo
'failed';
}
?>

範例 #2 從 zip 項目轉換圖片

<?php
$z
= new ZipArchive();
if (
$z->open(dirname(__FILE__) . '/test_im.zip')) {
$im_string = $z->getFromName("pear_item.gif");
$im = imagecreatefromstring($im_string);
imagepng($im, 'b.png');
}
?>

參見

新增註記

使用者貢獻的註記 2 則註記

-2
henrik dot haftmann at gmail dot com
8 年前
包含非 ASCII 字元之檔案名稱的處理方式並未記載於文件中。 這個函式似乎會呼叫 <?php mb_convert_encoding($name,"CP850","UTF-8") ?> 因此預期 zipfile 中的編碼為 DOS 編碼,而名稱的編碼為 UTF-8。 如果 zipfile 使用 UTF-8 名稱 (Pkzip 4.5 / Winzip 11.2),則此函式會失敗。 可以使用 getFromIndex 作為替代方案。
-5
masterboreq at gmail dot com
4 年前
當傳遞包含相對路徑(在 ZIP 封存檔內)的明確字串給方法時,例如 'path/to/file.php/',請確保您使用單引號 (') 而不是雙引號 (")。雙引號會產生 FALSE(至少在 Windows 電腦上),且沒有進一步的提示說明哪裡出錯。
此外,請確保 ZIP 檔案內使用的路徑分隔符號是反斜線或正斜線,因為在這邊也會造成差異。
希望我幫您省去處理這個(到目前為止)未提及的「特性」時的頭痛 :)
To Top