当前位置: 首页 > 工具软件 > PHP-Parser > 使用案例 >

php 安装ic9扩展,使用php-mime-mail-parser解析邮件扩展格式的doc文件

燕宏胜
2023-12-01

有一种doc文件,office word可以正常打开,但当你想像其他doc文件一样使用libreoffice去操作它的时候会发现里面全是字符串,使用一个编辑器(比如Sublime Text)打开后发现,里面的内容是这样的:

From:

Subject: Resume

MIME-Version:1.0

X-51JOB-FLAG:EhireExport_20190527_15590388

Content-Type:multipart/related;boundary="--boundary_0_9ed30801b0c180c69b3c5d74fede848e"

----boundary_0_9ed30801b0c180c69b3c5d74fede848e

Content-Type:text/html;charset="gb2312"

Content-Transfer-Encoding:base64

PGh0bWw+PGJvZHk+PHRhYmxlIHdpZHRoPSc3MDInIGhlaWdodD0nNjInIGJvcmRlcj0nMCcgYWxp

Z249J2NlbnRlcicgY2VsbHBhZGRpbmc9JzAnIGNlbGxzcGFjaW5nPScwJz48dHI+PHRkIHdpZHRo

PSc2MiUnIGhlaWdodD0nNTAnIGFsaWduPSdsZWZ0JyB2YWxpZ249J2JvdHRvbScgY2xhc3M9J3Rv

cCc+PGJyIC8+uPzQwsqxvOSjujxzcGFuIHN0eWxlPSJjb2xvcjojMjU2ZmI4OyI+MjAxOS0wNS0y

Mzwvc3Bhbj48L3RkPjx0ZCB3aWR0aD0nMzclJyBhbGlnbj0ncmlnaHQnIHZhbGlnbj0nYm90dG9t

Jz48aW1nIHdpZHRoPScxMjAnIGhlaWdodD0nNTAnIHNyYz0iY2lkOjZjM2U4MmRjLTNhZGEtNDNj

MS05NDdjLTc3OWY2YzI5MWRjZiIgLz48L3RkPjwvdHI+PC90YWJsZT48dGFibGUgd2lkdGg9Ijcw

MyIgYm9yZGVyPSIwIiBhbGlnbj0iY2VudGVyIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9

IjAiID48dHI+PHRkPjxodG1sIHhtbG5zOmNvZGU9InVybjplaGlyZS54c2x0LmV4dGVuc2lvbiI+

PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7

IGNoYXJzZXQ9Z2IyMzEyIj48c3R5bGU+DQogICAgICAgICAgI3RvcENoYXJ0eyBiYWNrZ3JvdW5k

...

经过一番探究,这是一份被编码的邮件格式文件,既然邮件格式,当然是有东西可以把它解码的,又经过一番探究,我找到了这个包php-mime-mail-parser/php-mime-mail-parser,于是就有了办法。

注意,在使用php-mime-mail-parser之前,需要安装php的mailparse扩展,请参考项目GitHub,上代码:

public function actionMht()

{

$file = Yii::getAlias('@runtime') . '/20190527.doc';

if($this->isMht($file)) {

$parser = new PhpMimeMailParser\Parser();

$parser->setText(file_get_contents($file));

$body = $parser->getMessageBody('html');

$body = str_replace(['charset=gb2312','charset=gbk'], 'charset=utf-8', $body);

$htmlFile = Yii::getAlias('@runtime') . '/20190527.html';

file_put_contents($htmlFile, $body);

}

}

public function isMht($file)

{

$fileData = fopen($file, "r");

$header = '';

while(!feof($fileData))

{

$data = str_replace(["\n", "\s", "\r\n"], '', fgets($fileData));

$header .= $data;

if($data == '') {

break;

}

}

fclose($fileData);

return strpos($header, 'MIME-Version') !== false;

}

先通过MIME-Version特征去判断是不是这种格式,然后使用php-mime-mail-parser解析,然后将其存储为html文件并将编码html转换成utf-8完成转换,这些特征提取和编码转换只是根据项目中的文件来判断,如果你也是这种文件,可以针对自己待处理的文件做出相应的调整以达到更好的效果。

这个解析器还有很多其他内容提取的方法,非常方便,更多用法参考GitHub。

使用php-mime-mail-parser解析邮件扩展格式的doc文件

更多精彩,敬请关注本博微信公众号:hsu1943

 类似资料: