【问题标题】:Displaying XML in HTML - how to preserve line breaks?在 HTML 中显示 XML - 如何保留换行符?
【发布时间】:2015-09-07 08:06:11
【问题描述】:

我正在开发一个函数,该函数从 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)

【问题讨论】:

  • 不确定,但尝试设置 preserveWhiteSpace 属性
  • 不,没用 :(

标签: php html xml formatting


【解决方案1】:

如果这对将来的任何人有帮助:strip_tags() 删除 HTML 标记以及 PHP 标记,所以当我使用 strip_tags() 时,它也删除了所有 &lt;br&gt; 等...

通过在使用strip_tags() 之前插入一个虚拟字符串代替换行符,然后使用str_replace() 重新插入它们(这次是&lt;br&gt;)来解决问题。经验教训:首先阅读文档! >

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-16
    • 2018-08-21
    • 2011-04-16
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    相关资源
    最近更新 更多