具体问题如图所示:
我在win10的环境中,用phpword生成的文件,用office word是能正常打开的,但是在linux服务器环境上生成的就打不开。一直报上面的错误,百度良久,未果。
于是我就是把linux环境下生成的文件发到手机,用qq直接打开,文件打开了,显示出了部分内容,并且有个残缺的“</p>”标签。然后我猜测应该html标签搞得鬼。
我要生成的word内容,里面确实是带html标签的,主要是p标签和 。随后便添加一段过滤代码,去除所有的html标签,然后生成的word,终于能用office word正常打开。
数据库存储的内容:
<p> 德玛西亚的荣光。</p><p> 诺克萨斯永不退缩。</p><p> 我是最后一句。</p>
下面是转化思路:
1. 将p标签对转化为单标签br
2. 利用strip_tag函数,过滤除br标签以外的html标签
3. trip_tag函数不能过滤 ,所以需要用str_replace在来一遍
4. 利用br标签作为分隔,将文本分隔成数组,然后逐个添加到word里
下面附部分代码:
$text = htmlspecialchars_decode($value['content']);
$text = str_replace('</p><p>', '<br>', $text);
$text = strip_tags($text, '<br>');
$text = str_replace(' ', '', $text);
$text = str_replace('</p>', '', $text);*/
$textArr = explode('<br>', $text);
foreach ($textArr as $k => $v) {
if (trim($v) != '') {
$section->addText(
$v,
['name' => '微软雅黑', 'size' => 12],
['lineHeight' => 1.2, 'spaceBefore' => 200, 'spaceAfter' => 200]
);
}
}
最后总结: liunx环境下,使用phpword生成word文件时,生成的内容中不可以包含任何的html标签,要写纯文本!
如有帮助,欢迎点赞!如有疑问,欢迎留言!