ホームページ >バックエンド開発 >PHPチュートリアル >PHPマスター| PHPのアクセスデータベースからオブジェクトを抽出します、パート2

PHPマスター| PHPのアクセスデータベースからオブジェクトを抽出します、パート2

William Shakespeare
William Shakespeareオリジナル
2025-02-24 10:45:10302ブラウズ

この記事では、PHPを使用してLegacy Microsoft Accessデータベースから埋め込まれたPDFと画像ファイルを抽出する方法を示しています。 パート1は、パッケージオブジェクトを抽出しました。この部分は、PDFと一般的な画像形式(BMP、GIF、JPEG、PNG)に焦点を当てています。 これらのファイルは、多様ですが、一般的なOLEコンテナ構造:可変長ヘッダーとトレーラーを共有しています。 抽出のためにこの構造を活用します。

重要な概念:

  • pdf抽出:phpのおよびstrpos()関数は、16進シーケンスsubstr()(255044446)および%PDF(2525454f46)。 %%EOF
  • 画像抽出(BMP、GIF、JPEG、PNG):
  • 同様の手法が使用され、各画像タイプの開始デリミターとエンドのデリミタを適応させます。 不明なオールタイプの処理:新しい関数は、後の分析のために未確認のOLEオブジェクトを保存し、スクリプトの堅牢性を高めます。
  • 強化されたスイッチステートメント:元のスイッチステートメントが改善され、より広い範囲のOLEオブジェクトタイプを処理します。 extractUnknown()
  • Adobe Acrobat Documents(PDFS)の抽出
  • データベースの例には、レコード13のPDFが含まれています。OLEフィールドの初期バイトを検査すると、PDFの存在が明らかになりますが、ファイル名やサイズのようなメタデータがありません。 ただし、すべてのPDFの一貫した
  • および
マーカーにより、信頼できる抽出が可能になります。 PHPスクリプトは、これらの16進シーケンスを検索して開始点とエンドポイントを決定し、

%PDF%%EOF substr()

他のオブジェクトタイプの処理

PHP Master | Extract Objects from an Access Database with PHP, Part 2

改良されたPHPスクリプトには、後の試験のために不明なOLEタイプ(ファイル名としてレコードIDを使用)を処理および保存するための

が含まれています。これは、埋め込まれた画像を識別するために重要です PHP Master | Extract Objects from an Access Database with PHP, Part 2

人気のある画像タイプの抽出 OLEヘッダー内の画像タイプの識別は、発信ソフトウェアとファイルの関連によって異なります。

関数は、これらのタイプをカタログ化するのに役立ちます。 BMP、GIF、JPEG、およびPNGに焦点を当てます。 GIF、JPEG、およびPNG抽出はPDFメソッドを反映しており、デリミターのみを変更します。

extractUnknown()

BMP抽出はわずかに異なります。 スタートは簡単に見つかります(BM)が、最後にはサイズ(ヘッダーから)を計算し、それを使用してデータを抽出する前にビッグエンディアン形式に変換する必要があります。

PHP Master | Extract Objects from an Access Database with PHP, Part 2

完全なphpスクリプト(部分)

以下は、更新されたPHPスクリプトのスニペットです。 GIF、JPEG、およびPNGを抽出する機能は、簡潔にするために省略されていますが、PDFおよびBMP抽出と同じパターンに従います。

完全な更新されたスクリプト(省略された関数を含む)は、GitHub(Part-1およびPart-2ブランチへのリンク)で利用できます。この改良されたスクリプトは、アクセスデータベースからさまざまなOLEオブジェクトタイプを抽出するためのより包括的なソリューションを提供します。 この2部構成のシリーズは、レガシーアクセスデータベースから移行するための貴重なツールを提供します。
<code class="language-php"><?php
function extractUnknown($id, $data) {
    file_put_contents($id . ".txt", hex2bin($data));
}
?></code>

(BrevityのためにFAQSセクションは省略されていますが、出力の残りの部分と同様の言い換えられたスタイルで書き直すことができます。)

以上がPHPマスター| PHPのアクセスデータベースからオブジェクトを抽出します、パート2の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。