PHPでWord、Excel、PowerPoint、TXT、CSV、PDFといった多様なファイル形式からテキストデータを抽出する方法について解説します。
サーバー環境情報
- サーバー: エックスサーバー(スタンダードプラン)
- PHPバージョン: 7.4.33
- Composerバージョン: 2.7.8
この環境に基づいて、各ファイル形式からテキストデータを抽出するために必要なライブラリのインストールとコード例を示します。
対応するファイル形式と使用するライブラリ
以下のライブラリを使用して、各形式のファイルからテキストを抽出します。
- Wordファイル: PHPWord
- Excelファイル: PhpSpreadsheet
- PowerPointファイル: PHPPresentation
- TXTファイル: PHP標準関数
- CSVファイル: PHP標準関数
- PDFファイル: PdfParser
PHPライブラリのインストール方法
composer
を使用して簡単にライブラリをインストールできます。PHP 7.4.33環境において、各ライブラリを以下のコマンドでインストールします。
# PHPWordのインストール
composer require phpoffice/phpword
# PhpSpreadsheetのインストール
composer require phpoffice/phpspreadsheet
# PHPPresentationのインストール
composer require phpoffice/phppresentation
# PdfParserのインストール
composer require smalot/pdfparser
各ファイル形式からテキストを取得する方法
1. Wordファイル (.docx, .doc)
.docx
形式のWordファイルからテキストを抽出するためにPHPWord
を使用します。.doc
形式は古いバイナリ形式のため、直接サポートされていませんので、antiword
などの外部ツールを利用するなど.docx形式へ変換が必要です。
.docxファイルの例
require_once 'vendor/autoload.php';
use PhpOffice\PhpWord\IOFactory;
$phpWord = IOFactory::load('sample.docx');
$text = '';
foreach ($phpWord->getSections() as $section) {
foreach ($section->getElements() as $element) {
if (method_exists($element, 'getText')) {
$text .= $element->getText() . "\n";
}
}
}
echo $text;
.docファイルの場合
.doc
形式のファイルにはantiword
やcatdoc
などの外部ツールを利用するなど、.docx形式へ変換する必要があります。
2. Excelファイル (.xlsx, .xls)
Excelファイルからテキストを抽出するには、PhpSpreadsheet
を使用します。PHP 7.4.33でインストールされるバージョンは1.29.0
です。
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\IOFactory;
$spreadsheet = IOFactory::load('sample.xlsx');
$sheet = $spreadsheet->getActiveSheet();
$text = '';
foreach ($sheet->getRowIterator() as $row) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
foreach ($cellIterator as $cell) {
$text .= $cell->getValue() . "\t";
}
$text .= "\n";
}
echo $text;
3. PowerPointファイル (.pptx, .ppt)
.pptx
形式のファイルからテキストを取得するには、PHPPresentation
を使います。PHP 7.4.33では、PHPPresentation 1.0.0
を使用します。
require_once 'vendor/autoload.php';
use PhpOffice\PhpPresentation\IOFactory;
$pptReader = IOFactory::createReader('PowerPoint2007');
$ppt = $pptReader->load('sample.pptx');
$text = '';
foreach ($ppt->getAllSlides() as $slide) {
foreach ($slide->getShapeCollection() as $shape) {
if (method_exists($shape, 'getText')) {
$text .= $shape->getText() . "\n";
}
}
}
echo $text;
.ppt
形式のファイルはサポートされていないため、PowerPoint
やLibreOffice
などを使って.pptx
に変換してから処理します。
4. TXTファイル
TXTファイルはPHPの標準関数file_get_contents
を使って簡単に読み取れます。
$text = file_get_contents('sample.txt');
echo $text;
5. CSVファイル
CSVファイルからデータを取得するには、fgetcsv
を使用します。
$csvFile = fopen('sample.csv', 'r');
while (($line = fgetcsv($csvFile)) !== FALSE) {
echo implode("\t", $line) . "\n";
}
fclose($csvFile);
6. PDFファイル
PDFファイルからテキストを取得するには、PdfParser
ライブラリを使用します。PHP 7.4.33環境では、PdfParser 2.11.0
が利用可能です。
require 'vendor/autoload.php';
use Smalot\PdfParser\Parser;
$parser = new Parser();
$pdf = $parser->parseFile('sample.pdf');
$text = $pdf->getText();
echo $text;
まとめ
この記事では、PHP 7.4.33環境下のエックスサーバーで様々なファイル形式からテキストを抽出する方法を紹介しました。各ライブラリをインストールし、Word、Excel、PowerPoint、TXT、CSV、PDFファイルを処理する方法を実装しています。
コメント