在HTML中显示XML - 如何保留换行符?

时间:2015-09-07 08:06:12

标签: php html xml formatting

我正在处理一个从Microsoft Word .docx文件中获取内容的函数,并将其显示在web page中。文字渲染得很好,但我似乎无法让它显示换行符?

我的功能代码如下:

function readDocx($filePath) {
$zip = new ZipArchive;
//Create new ZIP archive
$dataFile = "word/document.xml";

//Open received archive file
if (true === $zip->open($filePath)) {
    //if open successful, search for the data file inside the archive
    if (($index = $zip ->locateName($dataFile)) !== false) {
        //if found, read it to the string
        $data = $zip->getFromIndex($index);

        //load XML from a string. skips errors and warnings
        $xml = new DOMDocument();
        $xml->loadXML($data, LIBXML_NOENT | LIBXML_XINCLUDE | LIBXML_NOERROR | LIBXML_NOWARNING);

        $xmldata = $xml->saveXML();
        $xmldata = str_replace("</w:p>", "^^^^^^" . "&#10" . "<br>" . "\n" . "<br />" . "<p>" . "%%%", $xmldata);

        echo strip_tags($xmldata);

    }
    $zip->close();
}   
//in case of failure, return an empty string
else {
    echo "An error has occurred while opening the file - please try again!";
}
}

该函数的输出类似于:

原创 -

“Lorem ipsum

lorem ipsum“

输出

“Lorem ipsum ^^^^^ %%% lorem ipsum”

我在SO上查找了其他答案,但找不到任何有效解决问题的方法......非常感谢任何帮助! (虽然你可能需要用更基本的术语解释,我仍然是一个新秀:D)

1 个答案:

答案 0 :(得分:0)

如果这有助于将来的任何人:strip_tags()删除HTML标记以及PHP标记,那么当我使用strip_tags()时,它会删除所有<br>&#39}和同样......

通过在使用strip_tags()之前插入虚拟字符串代替换行符来解决问题,然后使用str_replace()重新插入它们(此时为<br>)。获得的经验:先阅读文档! &GT;&LT;