isEraseLink:是否去掉 HTML 代码中的超链接
返回值为 mht 的文件内容,您可以通过 file_put_content 将它保存成后缀名为 doc 的文件
这个函数的主要功能其实就是分析
HTML 代码中的所有图片地址,并且依次下载下来。获
取到了图片的内容以后,调用
MhtFileMaker 类,将图片添加到 mht 文件中。具体的添加细
节,封装在
MhtFileMaker 类中了。
代码如下
:
/**
* 根据 HTML 代码获取 word 文档内容
* 创建一个本质为 mht 的文档,该函数会分析文件内容并从远程下载页面中的图片资源
* 该函数依赖于类 MhtFileMaker
* 该函数会分析 img 标签,提取 src 的属性值。但是,src 的属性值必须被引号包围,否则不
能提取
*
* @param string $content HTML 内容
* @param string $absolutePath 网页的绝对路径。如果 HTML 内容里的图片路径为相对路径,
那么就需要填写这个参数,来让该函数自动填补成绝对路径。这个参数最后需要以
/结束
* @param bool $isEraseLink 是否去掉 HTML 内容中的链接
* by www.jb51.net
*/
function getWordDocument( $content , $absolutePath = "" , $isEraseLink = true )
{
$mht = new MhtFileMaker();
if ($isEraseLink)
$content = preg_replace('/<a\s*.*?\s*>(\s*.*?\s*)<\/a>/i' , '$1' , $content); //去掉链接
$images = array();
$files = array();
$matches = array();
//这个算法要求 src 后的属性值必须使用引号括起来
if ( preg_match_all('/<img[.\n]*?src\s*?=\s*?[\"\'](.*?)[\"\'](.*?)\/>/i',$content ,$matches ) )
{
$arrPath = $matches[1];
for ( $i=0;$i<count($arrPath);$i++)
{
$path = $arrPath[$i];
$imgPath = trim( $path );
if ( $imgPath != "" )
{
$files[] = $imgPath;
if( substr($imgPath,0,7) == 'http://')