関数・クラス解説

RarArchive::open

rar_open

version:PECL rar >= 2.0.0 (公式)

Rar アーカイブをオープンする

公式リファレンス

書式

public static RarArchive::open ( string $filename [, string $password = NULL [, callable $volume_callback = NULL ]] ) : RarArchive|false

rar_open ( string $filename [, string $password = NULL [, callable $volume_callback = NULL ]] ) : RarArchive|false

説明

オブジェクト指向型 (メソッド)

手続き型:

指定した RAR アーカイブをオープンし、RarArchive インスタンスを返します。

注意:

マルチボリュームのアーカイブをオープンするときには、 最初のボリュームのパスをパラメータに指定します。 そうしないとすべてのファイルを表示することはできません。これは仕様です。

パラメータ

filename
Rar アーカイブへのパス。
password
ヘッダの復号に必要な場合、プレーンテキストのパスワード。 暗号化されたファイルが見つかったときにも、これがデフォルトのパスワードとして使われます。 ヘッダのパスワードとファイルのパスワードは異なる場合があることに注意しましょう。
volume_callback
ひとつのパラメータ (見つからなかったボリュームのパス) を受け取ってそのボリュームの正しいパスを返す関数。 この関数は、ボリュームが存在しなかったり未知であったりする場合は NULL を返さなければなりません。 この関数はループを引き起こさないようにしなければなりません。 前のコールで返されたパスがそのボリュームに対応しない場合に 関数が繰り返しコールされることがあるからです。 このパラメータを指定すると、ボリュームが見つからなかったときの notice は一切無視するようになります。したがって、 単に NULL を返すだけの実装を渡しておけば、 notice を無視させるためだけに使うこともできます。
警告 バージョン 2.0.0 より前では、この関数は相対パスを正しく処理できません。 回避策として realpath() を使いましょう。

返値

RarArchive インスタンスを返します。失敗した場合に FALSE を返します。

注意

警告 バージョン 2.0.0 より前では、この関数は相対パスを正しく処理できません。 回避策として realpath() を使いましょう。

更新履歴

バージョン 説明
PECL rar 3.0.0 volume_callback が追加されました。

サンプル

例1 オブジェクト指向型

$rar_arch = RarArchive::open('encrypted_headers.rar', 'samplepassword'); if ($rar_arch === FALSE)     die("Failed opening file");      $entries = $rar_arch->getEntries(); if ($entries === FALSE)     die("Failed fetching entries"); echo "Found " . count($entries) . " files.\n"; if (empty($entries))     die("No valid entries found.");      $stream = reset($entries)->getStream(); if ($stream === FALSE)     die("Failed opening first file"); $rar_arch->close(); echo "Content of first one follows:\n"; echo stream_get_contents($stream); fclose($stream);

上の例の出力は、たとえば以下のようになります。

Found 2 files. Content of first one follows: Encrypted file 1 contents.

例2 手続き型

$rar_arch = rar_open('encrypted_headers.rar', 'samplepassword'); if ($rar_arch === FALSE)     die("Failed opening file");      $entries = rar_list($rar_arch); if ($entries === FALSE)     die("Failed fetching entries"); echo "Found " . count($entries) . " files.\n"; if (empty($entries))     die("No valid entries found.");      $stream = reset($entries)->getStream(); if ($stream === FALSE)     die("Failed opening first file"); rar_close($rar_arch); echo "Content of first one follows:\n"; echo stream_get_contents($stream); fclose($stream);

例3 ボリュームコールバック

/* この例では multi_broken.part1.rar というボリュームがあり、  * 次のボリュームが multi.part2.rar であるものとします */ function resolve($vol) {     if (preg_match('/_broken/', $vol))         return str_replace('_broken', '', $vol);     else         return null; } $rar_file1 = rar_open(dirname(__FILE__).'/multi_broken.part1.rar', null, 'resolve'); $entry = $rar_file1->getEntry('file2.txt'); $entry->extract(null, dirname(__FILE__) . "/temp_file2.txt");

参考

  • rar:// wrapper
  • ワード検索


    ※入力キーワードが、関数名・説明文・タグに含まれるものを検索

    関数名アルファベット別

    A B C D E F G H I J
    K L M N O P Q R S T
    U V W X Y Z _

    最終更新一覧

    stristr
     大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

    stripslashes
     バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

    stripos
     大文字小文字を区別せずに文字列が最初に現れる位置を取得する

    stripcslashes
     addcslashes() でクォートされた文字列をアンクォートする

    strip_tags
     文字列から HTML と PHP のタグを除去して返却

    strcspn
     指定した文字が最初に現れる位置を調べる

    strcoll
     ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

    strcmp
     2つの文字列を比較し同じか(あるいは大小)を判定する

    strchr
     strstr() のエイリアス

    strcasecmp
     2つの文字列を比較(大文字小文字を区別せず同じとみなす)

    カテゴリー一覧

    PHP の振る舞いの変更
    音声フォーマットの操作
    認証サービス
    コマンドライン関連
    圧縮およびアーカイブ
    暗号
    データベース関連
    日付および時刻関連
    ファイルシステム
    自然言語および文字エンコーディング
    画像処理および作成
    メール関連
    数学
    テキスト以外の MIME 型
    プロセス制御
    その他の基本モジュール
    その他のサービス
    検索エンジン用の拡張モジュール
    サーバー固有のモジュール
    セッション関連
    テキスト処理
    変数・データ型関連
    ウェブサービス
    Windows 用のモジュール
    XML 操作
    GUI用の拡張モジュール