text-media / file-parser
v1.8.5
2022-04-26 07:42 UTC
Requires
- ext-curl: *
- ext-gd: *
- ext-xml: *
- ext-zip: *
- phpoffice/phpspreadsheet: ^1.6
- text-media/encoding-converter: ^1.0
- text-media/mime-types: ^1.0
Requires (Dev)
- phpunit/phpunit: ^5.6
- squizlabs/php_codesniffer: ^3.1
README
从不同类型的文件中获取文本。
安装
安装所有必需的命令行工具(如果缺少,安装器将提示需要安装什么以及如何安装)
sudo apt-get install antiword unrtf poppler-utils
在composer.json中添加依赖
composer require text-media/file-parser
在composer.json
中的修改,用于自动检查必需的命令行工具
{
"scripts": {
"post-install-cmd": ["file-parser-check-commands.php"],
"post-update-cmd": ["file-parser-check-commands.php"]
}
}
默认将检查file-parser-check-commands.php
中定义的所有工具。如果需要检查特定类型,请在末尾列出文件类型。要排除某个命令,需要以"-"为前缀。例如
{
"scripts": {
"post-install-cmd": ["file-parser-check-commands.php doc rtf -url"],
"post-update-cmd": ["file-parser-check-commands.php doc rtf -url"]
}
}
使用
使用示例
use \TextMedia\FileParser\Parser;
use \TextMedia\FileParser\ParserException;
use \TextMedia\FileParser\Parser\Parser\Pdf;
// получение списка поддерживаемых типов файлов
$types = Parser::getAvailableTypes();
// парсинг с авто-определением типа
$text = Parser::parse('/tmp/test.rtf');
// парсинг с явным указанием типа
$text = Parser::parse('/tmp/uploaded_file', 'docx');
// парсинг заранее прочитанного из файла текста
// тип - желателен, т.к. может оказаться не определён автоматически
$text = Parser::parse('<html>…</html>', 'html', false);
// явное указание парсера
$text = Pdf::parse(file_get_contents($pdf), false);
// проверка возможности парсинга файла указанного типа
try {
$parser = Parser::getParserByType('htm');
$text = $parser::parse($file);
} catch (ParserException $e) {
// …
}
// проверка возможности парсинга указанного файла
try {
$parser = Parser::getParserByFile($file);
$text = $parser::parse($file);
} catch (ParserException $e) {
// …
}
支持使用gzip
和zip
解析压缩文件:存档应仅包含一个文件,该文件将在临时目录中解压,然后应用Parser::parseFile
方法进行自动类型识别。
添加类型
要添加新的解析器类型,只需在src/FileParser/Parser
中创建一个新的类,继承自AbstractParser
(或其抽象后代)。
composer
不支持安装来自命令行工具的依赖——用于检查的工具是scripts/file-parser-check-commands.php.php
脚本。添加新解析器时,如果其工作需要额外的命令行工具,需要将其添加到该脚本中的$checkCommands
中。