从word文件中读取文本时,我得到以下输出。打印出一些奇怪的字符。有没有办法删除它们?
我使用此功能从docx文件中读取
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 :(得分: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');
真正的解决方法实际上是你了解发送到浏览器的内容,然后告诉浏览器它是什么。
答案 1 :(得分:0)
这与php无关......这是服务器编码问题。看看apache的默认编码设置。