PHP中的奇怪字符

时间:2011-12-24 02:18:26

标签: php

从word文件中读取文本时,我得到以下输出。打印出一些奇怪的字符。有没有办法删除它们?

enter image description here

我使用此功能从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 "";
}

2 个答案:

答案 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的默认编码设置。