成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識(shí)庫 > PHP實(shí)現(xiàn)rar解壓讀取擴(kuò)展包小結(jié)

PHP實(shí)現(xiàn)rar解壓讀取擴(kuò)展包小結(jié)

熱門標(biāo)簽:凱立德地鐵站地圖標(biāo)注 上海400客服電話怎么申請(qǐng) 銀行信貸電話機(jī)器人 手機(jī)外呼系統(tǒng)什么原理 合肥ai電銷機(jī)器人費(fèi)用 溫州外呼系統(tǒng)招商 天津電銷外呼系統(tǒng)違法嗎 滄州電銷外呼系統(tǒng)價(jià)格 400電話個(gè)人能不能辦理

作為壓縮解壓方面的擴(kuò)展學(xué)習(xí),兩大王牌壓縮格式 rar 和 zip 一直是計(jì)算機(jī)領(lǐng)域的壓縮終結(jié)者。rar 格式的壓縮包是 Windows 系統(tǒng)中有接近統(tǒng)治地位的存在,今天我們學(xué)習(xí)的 PHP 擴(kuò)展就是針對(duì)于 rar 的壓縮包操作,不過,PHP 的 rar 擴(kuò)展僅能讀取和解壓 rar 格式的壓縮包,并不能進(jìn)行壓縮操作。

php-rar 擴(kuò)展在 pecl 的安裝包已經(jīng)過時(shí)了,無法在 PHP7 中使用,我們需要使用它在 github 上的源碼進(jìn)行編譯安裝才能夠在 PHP7 的環(huán)境下安裝成功。

https://github.com/cataphract/php-rar

直接 git clone 之后就可以按正常的 PHP 擴(kuò)展的方式進(jìn)行安裝。

獲取壓縮包句柄 RarArchive

$arch = RarArchive::open("test.rar");

$archNo = rar_open("test.rar");

echo $arch, PHP_EOL; // RAR Archive "/data/www/blog/test.rar"
echo $archNo, PHP_EOL; // RAR Archive "/data/www/blog/test.rar"

$arch->close();
rar_close($archNo);

echo $arch, PHP_EOL; // RAR Archive "/data/www/blog/test.rar" (closed)
echo $archNo, PHP_EOL; // RAR Archive "/data/www/blog/test.rar" (closed)

php-rar 擴(kuò)展有兩種形式的寫法,一種是面向?qū)ο蟮?,也就是使?RarArchive 類來操作壓縮包。另一種方式就是直接使用一個(gè)函數(shù) rar_open 用來獲取一個(gè) rar 文件的句柄。它們都重寫了 __toString 方法,所以我們可以直接打印句柄的內(nèi)容看到當(dāng)前句柄所操作的具體文件。

當(dāng)我們關(guān)閉句柄時(shí),句柄對(duì)象依然能夠進(jìn)行輸出,但后面會(huì)顯示一個(gè) closed 。這時(shí)的句柄對(duì)象已經(jīng)不能進(jìn)行其它操作了。

$arch = RarArchive::open("test.rar");
$archNo = rar_open("test.rar");

echo $arch->getComment(), PHP_EOL;
echo $arch->isBroken(), PHP_EOL;
echo $arch->isSolid(), PHP_EOL;

echo rar_comment_get($archNo), PHP_EOL;
echo rar_broken_is($archNo), PHP_EOL;
echo rar_solid_is($archNo), PHP_EOL;

echo $arch->setAllowBroken(true), PHP_EOL;
echo rar_allow_broken_set($archNo, true), PHP_EOL;

RarArchive 對(duì)象的一些方法可以幫我們獲取當(dāng)前壓縮包的信息。比如 getComment() 獲取壓縮包的說明信息,isBroken() 獲取當(dāng)前壓縮包是否有損壞,isSolid() 檢查當(dāng)前壓縮包是否可用。而 setAllowBroken() 方法是讓我們允許對(duì)損壞的壓縮包進(jìn)行操作。這里我們給出了面向?qū)ο蠛兔嫦蜻^程的寫法。

壓縮包內(nèi)的每個(gè)實(shí)體文件或目錄操作 RarEntry

獲得壓縮包的句柄之后,我們就需要更進(jìn)一步地獲取壓縮包內(nèi)部的內(nèi)容。而句柄對(duì)象中就已經(jīng)保存了壓縮包內(nèi)部的各個(gè)文件和目錄的對(duì)象 RarEntry 。

$gameEntry = $arch->getEntry('ldxlcs/ldxlcs/game.htm');
echo $gameEntry->getName(), PHP_EOL; // ldxlcs/ldxlcs/game.htm
echo $gameEntry->getUnpackedSize(), PHP_EOL; // 56063

$gameEntryNo = rar_entry_get($arch, "ldxlcs/ldxlcs/game.htm");
echo $gameEntry->getName(), PHP_EOL; // ldxlcs/ldxlcs/game.htm
echo $gameEntry->getUnpackedSize(), PHP_EOL; // 56063

$fp = $gameEntryNo->getStream();
while (!feof($fp)) {
    $buff = fread($fp, 8192);
    if ($buff !== false) {
        echo $buff;
    } else {
        break;
    }
    //fread error
}
// 輸出文件的全部內(nèi)容
echo PHP_EOL;

echo 'Entry extract: ', $gameEntry->extract("./"), PHP_EOL;

句柄對(duì)象的 getEntry() 方法就是用于獲取指定的文件或者目錄內(nèi)容的。它獲取的是單個(gè)文件或目錄,所以必須明確地指定需要獲取的文件內(nèi)容。通過這個(gè)方法,我們可以拿到一個(gè) RarEntry 對(duì)象。接下來,就是這個(gè)對(duì)象的一些操作。

RarEntry 對(duì)象的 getName() 方法用于獲取文件名稱,這個(gè)文件名稱是帶路徑的,這個(gè)路徑是壓縮包內(nèi)的絕對(duì)路徑。getUnpackedSize() 方法用于獲取文件的大小,getStream() 用于獲取文件流,通過 getStream() 方法,我們就可以直接打印輸出文件的內(nèi)容。

當(dāng)然,最最重要的是,我們可以通過 extract() 方法來直接解壓一個(gè)文件到指定的目錄。php-rar 擴(kuò)展并沒有提供一個(gè)能夠完全地解壓整個(gè)壓縮包的方法,所以如果我們需要對(duì)整個(gè)壓縮包進(jìn)行解壓的話,就需要通過循環(huán)遍歷壓縮包內(nèi)部的全部內(nèi)容來對(duì)這些文件一個(gè)一個(gè)地進(jìn)行解壓。

最后,我們就來看看如何遍歷壓縮包內(nèi)的全部內(nèi)容。

$entries = $arch->getEntries();

foreach ($entries as $en) {
    echo $en, PHP_EOL;
    echo $en->getName(), PHP_EOL;
    echo $en->getUnpackedSize(), PHP_EOL;
    echo $en->getAttr(), PHP_EOL;
    echo $en->getCrc(), PHP_EOL;
    echo $en->getFileTime(), PHP_EOL;
    echo $en->getHostOs(), PHP_EOL;
    echo $en->getMethod(), PHP_EOL;
    echo $en->getPackedSize(), PHP_EOL;
    echo $en->getVersion(), PHP_EOL;
    echo $en->isDirectory(), PHP_EOL;
    echo $en->isEncrypted(), PHP_EOL;

}

// 壓縮包中所有文件的內(nèi)容
// RarEntry for file "ldxlcs/ldxlcs/game.htm" (3c19abf6)
// ldxlcs/ldxlcs/game.htm
// 56063
// 32
// 3c19abf6
// 2017-09-10 13:25:04
// 2
// 51
// 7049
// 200
// ……

$entriesNo = rar_list($archNo);
foreach ($entriesNo as $en) {
    echo $en->getName(), PHP_EOL;
}

直接使用的是 RarArchive 對(duì)象的 getEntries() 方法,我們通過這個(gè)方法可以獲得一個(gè) RarEntry 對(duì)象的數(shù)組,里面包含的就是這個(gè) rar 壓縮包里面的全部內(nèi)容。在這段代碼中,我們還打印了 RarEntry 對(duì)象的其它一些屬性方法,根據(jù)名稱也能大概了解這些方法都是獲取關(guān)于文件的各種信息的,大家可以自行測試。

異常處理

最后,如果打開錯(cuò)了文件或者獲取壓縮包內(nèi)部沒有的文件時(shí),php-rar 擴(kuò)展會(huì)以 PHP 錯(cuò)誤的形式報(bào)錯(cuò)。但既然提供了完整的面向?qū)ο髮懛?,那么它也必然提供了一套面向?qū)ο蟮漠惓L幚頇C(jī)制。

// 不打開 UsingExceptions 全部錯(cuò)誤會(huì)走 PHP 錯(cuò)誤機(jī)制,打開后走 PHP 的異常機(jī)制
RarException::setUsingExceptions(true);
var_dump(RarException::isUsingExceptions()); // bool(true)
try {
    $arch = RarArchive::open("test1.rar");
    $arch->getEntry('ttt.txt');
} catch (RarException $e) {
    var_dump($e);
    // object(RarException)#35 (7) {
    //     ["message":protected]=>
    //     string(91) "unRAR internal error: Failed to open /data/www/blog/test1.rar: ERAR_EOPEN (file open error)"
    //     ["string":"Exception":private]=>
    //     string(0) ""
    //     ["code":protected]=>
    //     int(15)
    //     ["file":protected]=>
    //     string(22) "/data/www/blog/rar.php"
    //     ["line":protected]=>
    //     int(93)
    //     ["trace":"Exception":private]=>
    //     array(1) {
    //       [0]=>
    //       array(6) {
    //         ["file"]=>
    //         string(22) "/data/www/blog/rar.php"
    //         ["line"]=>
    //         int(93)
    //         ["function"]=>
    //         string(4) "open"
    //         ["class"]=>
    //         string(10) "RarArchive"
    //         ["type"]=>
    //         string(2) "::"
    //         ["args"]=>
    //         array(1) {
    //           [0]=>
    //           string(9) "test1.rar"
    //         }
    //       }
    //     }
    //     ["previous":"Exception":private]=>
    //     NULL
    //   }
}

只要將 RarException::setUsingExceptions() 設(shè)置為 true ,就能夠開啟 php-rar 擴(kuò)展的異常處理機(jī)制,這時(shí),我們打開一個(gè)錯(cuò)誤的文件,或者去獲取壓縮包內(nèi)的一個(gè)錯(cuò)誤文件路徑,那么,錯(cuò)誤信息就會(huì)以異常的形式進(jìn)行拋出。

總結(jié)

這套擴(kuò)展是不是感覺很人性化?即提供了面向?qū)ο蟮姆绞?,也提供了以函?shù)操作為主的面向過程的方式。但是,這樣做其實(shí)并沒有太多的好處,因?yàn)橛忠骖櫪洗a,又要兼顧新思想,本身擴(kuò)展的內(nèi)部實(shí)現(xiàn)相必也會(huì)復(fù)雜很多。我們自己寫代碼的時(shí)候就盡量不要這么寫了,在重構(gòu)的時(shí)候一步步的向最新的形式遷移即可。

關(guān)于 rar 的壓縮操作并沒有找到太多有用的資料。當(dāng)然,我們在生產(chǎn)環(huán)境中如果要生成壓縮包的話大部分情況下都會(huì)直接去生成 zip 格式的提供給用戶,畢竟大部分的客戶端軟件都是能夠同時(shí)支持 rar 和 zip 格式文件的解壓的,如果一定要指定生成 rar 的話,也可以多多和產(chǎn)品經(jīng)理或者客戶商量。有的時(shí)候,技術(shù)的難點(diǎn)是可以通過業(yè)務(wù)的變通來解決的,最重要的其實(shí)還是在于溝通。

測試代碼:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202007/source/PHP%E7%9A%84rar%E8%A7%A3%E5%8E%8B%E8%AF%BB%E5%8F%96%E6%89%A9%E5%B1%95%E5%8C%85%E5%AD%A6%E4%B9%A0.php

參考文檔:
https://www.php.net/manual/zh/book.rar.php

以上就是PHP的rar解壓讀取擴(kuò)展包學(xué)習(xí)的詳細(xì)內(nèi)容,更多關(guān)于PHP rar解壓讀取的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • php解壓縮zip和rar壓縮包文件的方法
  • php安裝php_rar擴(kuò)展實(shí)現(xiàn)rar文件讀取和解壓的方法
  • php 解壓rar文件及zip文件的方法
  • PHP執(zhí)行zip與rar解壓縮方法實(shí)現(xiàn)代碼
  • ThinkPHP5.0框架驗(yàn)證碼功能實(shí)現(xiàn)方法【基于第三方擴(kuò)展包】

標(biāo)簽:洛陽 酒泉 七臺(tái)河 溫州 金華 怒江 赤峰 白城

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP實(shí)現(xiàn)rar解壓讀取擴(kuò)展包小結(jié)》,本文關(guān)鍵詞  PHP,實(shí)現(xiàn),rar,解壓,讀取,擴(kuò)展,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP實(shí)現(xiàn)rar解壓讀取擴(kuò)展包小結(jié)》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP實(shí)現(xiàn)rar解壓讀取擴(kuò)展包小結(jié)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美日韩国产专区| 免费看成人吃奶视频在线| 中文字幕在线观看欧美| 熟妇人妻中文av无码| 精品国产国产综合精品| 精品欧美一区二区三区在线观看| 日本激情视频一区二区三区| 亚洲天堂小视频| 国产视频精品久久| 成人无码www在线看免费| 欧美日韩一区二区视频在线观看| 99精品在线看| 影音先锋在线视频| 91成人精品网站| 日韩在线中文字幕| 久久久久亚洲av片无码v| 色播色播色播色播色播在线| 色诱亚洲精品久久久久久| 中文字幕巨乱亚洲| 中出嫩模无套| 91精品啪在线观看麻豆免费| 九一精品国产| 日本少妇做爰全过程毛片| 日韩你懂的在线观看| 88xx成人网| 久久久久免费av| 日本jizzcom| 亚洲综合色av| 性xxxxfreexxxxx欧美丶| 日本天堂在线| 欧美黄色性生活| 天天干天天舔| 亚洲成人在线视频网站| 老牛国产精品一区的观看方式| 欧美成人milf| 国产porny蝌蚪视频| 国产5g影院天天爽天天看| 九九视频这里只有精品| 日韩av最新在线观看| 香蕉视频黄色片| 五月激情丁香一区二区三区| 久久久水蜜桃av免费网站| 一本到三区不卡视频| 婷婷丁香一区二区三区| 亚洲成人偷拍| 手机在线视频你懂的| 一精品久久久| 欧美拍拍视频| 亚洲成人日韩在线| 日韩午夜免费视频| 国产香蕉精品| 欧美国产精品一区二区| 亚洲精华国产精华精华液网站| 午夜一级久久| 校园春色 亚洲| 丰满人妻一区二区| 国产精品特级毛片一区二区三区| 亚洲自拍偷拍图| 欧美亚洲视频一区二区| 国产成人高清激情视频在线观看| 亚洲a级精品| 欧美精品97| 欧美日韩国产精品一区二区亚洲| 亚洲欧美日韩精品久久亚洲区| 97se亚洲国产一区二区三区| 先锋资源久久| 国产亚洲制服色| 色综合久久久| 色视频欧美一区二区三区| 97视频免费| 国产亚洲综合性久久久影院| 麻豆国产精品va在线观看不卡| 在线视频国内一区二区| 美女主播精品视频一二三四| ...av二区三区久久精品| 欧美一级久久久久久久大片| 亚洲第一免费播放区| 夜夜骑天天干| 国产精品色一区二区三区| 纪美影视在线观看电视版使用方法| 91成人抖音| 欧美精品一区二区三区很污很色的| 香蕉人人精品| 久久久女女女女999久久| 欧美1区2区视频| 国产精品乱码| 欧美男男青年gay1069videost| 性高潮免费视频| 国产乱视频在线观看播放| 日本高清视频网站www| 亚洲香肠在线观看| 韩国一区二区在线播放| 99蜜桃在线观看免费视频网站| 国产高清av在线播放| 日日噜噜夜夜狠狠| 国产精品69一区二区三区| 国产九九九视频| 夜夜嗨av一区二区三区网页| 精品国产免费一区二区三区香蕉| 日韩网站在线播放| 性高湖久久久久久久久aaaaa| 欧美日韩精品免费观看视频完整| 国产一区美女在线| yw.尤物在线精品视频| 黄色大片在线| 99久久er热在这里只有精品15| 中文字幕这里只有精品| 瑜伽美女视频| 日韩三级在线免费观看| 亚洲美女动态图120秒| 综合久久亚洲| 午夜美女久久久久爽久久| 最新黄色av网址| 国外成人在线视频| 在线不卡中文字幕播放| 免费av在线播放| 日本黄色大片视频| 国产日韩在线一区二区三区| 日韩精品在线免费看| 国产精品10p综合二区| 国产女主播在线写真| 亚洲色图激情小说| 欧美激情久久久久| 在线播放性xxx欧美| 亚洲中无吗在线| 成人情趣视频| 亚洲52av| 欧美精品一本久久男人的天堂| 欧美国产一二三区| 超碰免费公开在线| 成人欧美一区二区三区小说| 国产视频在线观看网站| 黄色网址网站在线观看| 韩国一区二区三区美女美女秀| 日本高清视频免费观看| 尤物在线视频观看| 亚洲综合色在线| 黑丝美女一区二区| 日本三级视频在线| 国产呻吟对白刺激无套视频在线| 97成人在线| www.麻豆传媒| 91精品国产一区二区三区蜜臀| 免费一级特黄特色大片| 亚洲成人在线观看视频| 精品176二区| 一级做a爱视频| 欧美性free免费| 高清久久精品| 亚洲欧美国产毛片在线| 国产精品一区二区三区免费视频| www.成人在线| 国产在线观看精品一区二区三区| 亚洲看片免费| 91在线观看免费| 午夜视频在线免费播放| 在线免费日韩| www.欧美日韩国产在线| 精品国产乱码久久久久软件| 午夜美女久久久久爽久久| 欧美日本一区二区视频在线观看| 欧美午夜春性猛交xxxx| 国产精品久久久久久久裸模| 欧美亚洲一区二区在线观看| 久久看片网站| 最新中文字幕在线观看视频| 黄污视频在线看| 囯产精品久久久久久| 老司机免费在线视频| 精品电影一区| 亚洲国产精品一| 日本不良网站在线观看| 欧美激情一区二区三区p站| 激情自拍一区| 国产哺乳奶水91在线播放| 91精品尤物| 亚洲一区二区三区中文字幕在线观看| 欧美日韩亚洲一二三| 国产一区二区三区久久悠悠色av| 另类专区欧美蜜桃臀第一页| av亚洲精华国产精华精华| 开心九九激情九九欧美日韩精美视频电影| 国产亚洲精品一区二区| 免费国产羞羞网站视频| 九九九九免费视频| 大肉大捧一进一出好爽动态图| 日韩精品一级毛片在线播放| 国产成人亚洲精品自产在线| 亚洲国产欧美一区二区三区同亚洲| 精品制服美女久久| 欧美激情图区| 在线a欧美视频| 91超碰在线免费| 欧美日韩国产成人在线观看| 成人午夜精品在线| 国产亚洲毛片| 国产资源第一页| 亚洲另类春色校园小说| 性欧美18~19sex高清播放| 欧美与动交zoz0z| 欧美一区二区三区激情| 亚洲欧美日韩一区二区三区在线观看| 黄色一级视频网站| 亚洲码国产岛国毛片在线| 精品久久久久久无码中文野结衣| 91视频在线网站| 在线精品亚洲一区二区| 欧美成人午夜视频| 色婷婷一区二区三区av免费看| 欧美日韩亚洲在线| 中文字字幕码一二三区| 欧美专区中文字幕| 成人片黄网站色大片免费毛片| 亚洲国产综合久久| 欧美成人综合在线| 妞干网在线视频| 日韩av在线免费观看一区| 国产一区视频观看| 日韩欧美中文字幕在线观看| 国产亚洲精品久久久久久无几年桃| 欧洲成人午夜精品无码区久久| 一区二区三区在线免费看| 婷婷丁香激情综合| 九九视频精品在线观看| 天堂精品中文字幕在线| 国产主播在线一区| 久久99久久久精品欧美| 中文字幕人成高视频| 天天操天天干天天综合网| 中文在线观看免费| 日韩成人av网址| 欧美性xxxxxxx| 成人精品电影在线| 超碰在线caoporn| 国产精品丝袜久久久久久消防器材| 破处女黄色一级片| 日韩成人久久久| 美女国产一区二区| 精品国产伦一区二区三区免费| 国产精品极品美女在线观看免费| 国产中文第一页| 欧美成人免费网站| 精品极品在线| 中文字幕一区二区三区四区五区| 亚洲理论电影在线观看| 日韩精品第二页| 日韩国产成人无码av毛片| 99re在线观看视频| 中文字幕一区2区3区| 国产人与zoxxxx另类91| 欧美一区二区精品在线| 91久久精品一区二区二区| 美女毛片在线看| 欧美jizz18性欧美| 高清视频在线观看一区| 自拍网站在线观看| 欧美日韩免费观看视频| 精品视频1区2区3区| 精品一区二区三区四区在线| 色综合久久综合网| 欧美6699| 午夜一区二区三区不卡视频| 欧美丝袜在线观看| 俄罗斯xxxx性全过程| 欧美国产精品va在线观看| 红桃一区二区三区| 久久精品亚洲人成影院| 欧美日韩国产成人在线| 久久亚洲精精品中文字幕早川悠里| 加勒比在线一区| 日本一区二区高清视频| 亚洲国产成人av好男人在线观看| 国产精品久久影视| 国产精品日韩久久久久| 噜噜噜在线观看免费视频日韩| 国产制服丝袜在线| 伊人网在线观看| 99精品一区二区三区| 午夜在线观看视频18| 国偷自产一区二区免费视频| 欧美不卡高清一区二区三区| 国产l精品国产亚洲区在线观看| 57pao国产成人免费| 国产成人自拍视频在线| 欧美日韩裸体免费视频| 视频一区国产精品| 日韩毛片高清在线播放| 久久99精品国产.久久久久久| 香蕉视频成人在线观看| 一区二区三区久久精品| 亚洲电影小说图| jizzjizz中国精品麻豆| 日韩精品视频在线观看视频| 欧美另类极品videosbestfree| 欧洲另类一二三四区| 欧美日韩国产经典色站一区二区三区| 欧美色图激情小说| 国产精品丝袜白浆摸在线| 一个人免费视频www在线观看| www.在线观看av| 欧美一区亚洲一区| 国产精品一在线观看| 卡一卡二国产精品| 亚洲精品女av网站| 99久久久无码国产精品免费蜜柚| 亚洲全黄一级网站| 一级特黄aaa大片在线观看| a级大片免费看| 日本在线免费观看一区| 亚洲精品97久久中文字幕无码| 影音先锋资源av| 999日本视频| 一本久道综合久久精品| 欧美成人久久久| 黄色一区二区三区四区| 日本免费不卡一区二区| 欧美另类bbbxxxxx另类| 色综合久久久久综合体| 国产精品久久久久久久久久久久午夜片| 91高清视频在线| a屁视频一区二区三区四区| 日韩欧美中文第一页| 日韩经典中文字幕一区| 久久精品成人av| 日韩一区二区三区精品视频| 天堂久久av| 91精品综合久久久久久久久久久| 国产二区视频|