Dieser Artikel zeigt, wie eingebettete PDF- und Bilddateien aus Legacy Microsoft Access -Datenbanken mithilfe von PHP extrahiert werden. Teil 1 abgedeckte Extrahieren verpackter Objekte; Dieser Teil konzentriert sich auf PDFs und gemeinsame Bildformate (BMP, GIF, JPEG, PNG). Diese Dateien teilen sich zwar eine gemeinsame Struktur von OLE-Containern: einen Header und einen Anhänger mit variabler Länge. Wir werden diese Struktur für die Extraktion nutzen.
Schlüsselkonzepte:
strpos()
und substr()
Funktionen pdfs und extrahieren die hexadezimalen Sequenzen %PDF
(25504446) und %%EOF
(2525454F46). extractUnknown()
, speichert nicht identifizierte OLE -Objekte für die spätere Analyse, wodurch die Robustheit des Skripts verbessert wird. Adobe Acrobat -Dokumente (PDFS)
extrahieren Die Beispieldatenbank enthält eine PDF in Datensatz 13. Die Überprüfung der anfänglichen Bytes des OLE -Feldes zeigt die Anwesenheit des PDF, fehlt jedoch keine Metadaten wie Dateinamen oder Größe. Die konsistenten %PDF
und %%EOF
-Marker in allen PDFs ermöglichen jedoch eine zuverlässige Extraktion. Das PHP -Skript sucht nach diesen hexadezimalen Sequenzen, um die Start- und Endpunkte zu bestimmen, und ermöglicht die Extraktion mit substr()
.
Umgang mit anderen Objekttypen
Das verbesserte PHP -Skript enthält extractUnknown()
, um unbekannte OLE -Typen (mit der Datensatz -ID als Dateiname) für eine spätere Prüfung zu verarbeiten und zu speichern. Dies ist entscheidend für die Identifizierung eingebetteter Bilder.
<?php function extractUnknown($id, $data) { file_put_contents($id . ".txt", hex2bin($data)); } ?>
extrahieren beliebte Bildtypen
Bildtypidentifikation im OLE -Header variiert je nach Ursprungssoftware und Dateiverbänden. Die extractUnknown()
-Funktion hilft, diese Typen zu katalogisieren. Wir konzentrieren uns auf BMP, GIF, JPEG und PNG. GIF-, JPEG- und PNG -Extraktion spiegelt die PDF -Methode wider und ändert nur die Grenzwerte:
BMP -Extraktion ist geringfügig unterschiedlich. Der Start ist leicht zu finden (BM
), aber das Ende erfordert die Berechnung der Größe (vom Kopfzeile) und das Umwandeln in das Big-Endian-Format, bevor Sie sie verwenden, um die Daten zu extrahieren.
Vollständiges PHP -Skript (partiell)
Folgendes ist ein Ausschnitt des aktualisierten PHP -Skripts. Die Funktionen zum Extrahieren von GIF, JPEG und PNG werden für die Kürze weggelassen, folgen jedoch dem gleichen Muster wie die PDF- und BMP -Extraktion.
<?php function extractUnknown($id, $data) { file_put_contents($id . ".txt", hex2bin($data)); } ?>
Das vollständige, aktualisierte Skript (einschließlich der ausgelassenen Funktionen) ist in GitHub (Links zu Teil-1- und Teil-2-Filialen) verfügbar. Dieses verbesserte Skript bietet eine umfassendere Lösung zum Extrahieren verschiedener OLE -Objekttypen aus Zugriffsdatenbanken. Diese zweiteilige Serie bietet wertvolle Tools zum Abmigrieren von Legacy Access-Datenbanken.
(FAQS-Abschnitt für Kürze weggelassen, kann aber in einem ähnlichen Umschreibungsstil wie der Rest der Ausgabe neu geschrieben werden.)
Das obige ist der detaillierte Inhalt vonPHP Master | Extrahieren Sie Objekte aus einer Zugriffsdatenbank mit PHP, Teil 2. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!