2015-11-04 8 views
0

У меня есть форма, где пользователь заполняет анкеты, когда они представляют специальные символы Док создал поврежденDoc файл поврежден, когда специальный устав быть занесен в PHPForm

Как я могу исправить этот

Моего код

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'); 

Ошибка

Warning: DOMDocument::loadXML(): StartTag: invalid element name in Entity, line: 1 in /home/xxxx/public_html/test/src/PhpWord/Shared/Html.php 

Это происходит только тогда, когда S пециальные символы, такие как «<» представляется

Все провода на этом Благодаря

ответ

0

При использовании функции addHtml() вам нужно, чтобы убедиться, что содержание текста не имеет HTML специальные символы. Это практически легко гарантировать с помощью функции php htmlspecialchars(), но, к сожалению, это приводит к следующей проблеме (по крайней мере, для меня в php 0.12.0), то есть проблема с добавлением содержимого, содержащего символы амперсанда (&), поэтому вам нужно сделать дополнительную настройку, чтобы заставить амперсанды работать. Вы могли бы попробовать что-то вроде этого, чтобы разобрать все входные значения пользователя:

function fixTextForPhpWord($string) 
{ 
     $text = htmlspecialchars($string); 
     $text = str_replace('&', '&amp;', $text); 
     return $text; 
} 

так в вашем случае:

$html .= '<ul><li>Company Name and Address : ' . fixTextForPhpWord($_POST["companyname"]) . ' </li></ul>' 

 Смежные вопросы

  • Нет связанных вопросов^_^