2011-12-24 2 views
1

При чтении текста из текстовых файлов я получаю следующий вывод. Некоторые странные символы распечатываются. Есть ли способ удалить их?странные charachters в PHP

enter image description here

I use this function to read from docx files 

function readDocx() { 
    // Create new ZIP archive 
    $zip = new ZipArchive; 
    $dataFile = 'word/document.xml'; 
    // Open received archive file 
    if (true === $zip->open($this->doc_path)) { 
     // If done, search for the data file in the archive 
     if (($index = $zip->locateName($dataFile)) !== false) { 
      // If found, read it to the string 
      $data = $zip->getFromIndex($index); 
      // Close archive file 
      $zip->close(); 
      // Load XML from a string 
      // Skip errors and warnings 
      $xml = DOMDocument::loadXML($data, LIBXML_NOENT | LIBXML_XINCLUDE | LIBXML_NOERROR | LIBXML_NOWARNING); 
      // Return data without XML formatting tags 

      $contents = explode('\n',strip_tags($xml->saveXML())); 
      $text = ''; 
      foreach($contents as $i=>$content) { 
       $text .= $contents[$i]; 
      } 
      return $text; 
     } 
     $zip->close(); 
    } 
    // In case of failure return empty string 
    return ""; 
} 
+0

Что вы сделали, чтобы попытаться исправить эту проблему? Как это не сработало? – sarnold

+0

Похоже, у вас есть проблема * кодирования *, которую вам нужно исправить, а не что-то, что имеет отношение к * экранированию *. Дайте нам более подробную информацию. Когда это происходит? Какие символы должны быть там? – deceze

+0

Не могли бы вы рассказать о своем вопросе? – Lion

ответ

1

Это часть я люблю больше всего:

 $contents = explode('\n',strip_tags($xml->saveXML())); 
     $text = ''; 
     foreach($contents as $i=>$content) { 
      $text .= $contents[$i]; 
     } 
     return $text; 

Не знаю, где вы скопировали их из, но это в основном:

 $text = strip_tags($xml->saveXML()); 
     return $text; 

Рядом с этим, saveXML() возвращает строку в UTF-8 кодирование. Ваш браузер ожидает чего-то еще, поэтому просто измените кодировку на что-то (вы должны это знать).

Как я не знаю, что, вероятно, вам неизвестно, как хорошо, просто обернуть что-либо в HTML сущностей, чтобы сделать этот мертвый безопасный:

 $text = strip_tags($xml->saveXML()); 
     return htmlentities($text, ENT_QUOTES, 'UTF-8'); 

Реальное исправление на самом деле будет то, что вы понимаете, что отправляются в браузер, а затем сообщают браузеру, что это такое.

0

Это не имеет ничего общего с PHP ... Это проблема кодировки сервера. Посмотрите на настройку кодировки по умолчанию для Apache.

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