记录名称:PHPWord内容为'<'时导致word打开失败错误
记录时间:2017年9月22日
记录人:Underdogs
使用环境:ThinkPHP引入PHPWord类库
摘要:
在使用PHPword库生成word过程中,遇到几次word不能打开情况,查看原因为<之后的内容未能写入word文档中,故进行测试,需求解决办法。
测试代码:
public function cword()
{
vendor('PHPWord.src.PhpWord.PhpWord');
$phpWord = new \PhpOffice\PhpWord\PhpWord();
$phpWord->setdefaultunit('字符');
$headerflag = false;//是否设置了页眉、页脚
$footflag = false;
$section = $phpWord->createSection();
$sectionStyle = $section->getStyle();
$textRun = $section->addTextRun(array('indentation'=>array('firstLine'=>2000)));
$textRun->addText(' ',array('size'=>20));
$textRun = $section->addTextRun();
$word = '<';
$textRun->addText($word,array('size'=>30));
$phpWord->save('test.docx','Word2007',false);
}
以上代码中$word为写入word中的内容,打开word显示非法名称字符错误。
解决办法:
将$word = htmlspecialchars($word);进行转义,即可解决。