在PHPForm中提交特殊特许时,文档文件已损坏
我有一个表单,用户填写问卷,当他们提交特殊字符时,创建的文档已损坏 我怎样才能解决这个问题 我的代码在PHPForm中提交特殊特许时,文档文件已损坏,php,phpword,Php,Phpword,我有一个表单,用户填写问卷,当他们提交特殊字符时,创建的文档已损坏 我怎样才能解决这个问题 我的代码 require_once 'src/PhpWord/Autoloader.php'; \PhpOffice\PhpWord\Autoloader::register(); if(isset($_POST['submit_docs'])){ $companyname= $_POST['companyname'];
require_once 'src/PhpWord/Autoloader.php';
\PhpOffice\PhpWord\Autoloader::register();
if(isset($_POST['submit_docs'])){
$companyname= $_POST['companyname'];
// Creating the new document...
$phpWord = new \PhpOffice\PhpWord\PhpWord();
// Adding an empty Section to the document...
$section = $phpWord->addSection();
$html .= '<ul><li>Company Name and Address : '.$_POST["companyname"].' </li></ul>';
\PhpOffice\PhpWord\Shared\Html::addHtml($section, $html);
$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
$objWriter->save('questionnaire/DMKSA_Questionnaire_'.$arr[0].'.docx');
只有在使用addHtml()函数时需要确保内容文本没有html特殊字符时,才会出现这种情况,例如“”。使用htmlspecialchars()php函数基本上很容易保证这一点,但不幸的是,这导致了下一个问题(至少在php 0.12.0中是这样),即添加包含符号和字符(&)的内容时存在问题,因此需要进行一些额外的调整以使符号正常工作。您可以尝试以下方法来解析所有用户输入值:
function fixTextForPhpWord($string)
{
$text = htmlspecialchars($string);
$text = str_replace('&', '&', $text);
return $text;
}
因此,在你的情况下:
$html .= '<ul><li>Company Name and Address : ' . fixTextForPhpWord($_POST["companyname"]) . ' </li></ul>'
$html.='- 公司名称和地址:'。fixTextForPhpWord($_POST[“companyname”])。'
'
$html .= '<ul><li>Company Name and Address : ' . fixTextForPhpWord($_POST["companyname"]) . ' </li></ul>'