PHP Tidy删除空格并插入换行符

时间:2013-02-28 23:30:05

标签: php xml whitespace space tidy

我想使用PHP Tidy来确保我的xml在加载到DomDocument之前有效。

但是,我不想让Tidy改变我的格式 - 我只希望它能修复像不平衡标签等问题。

可以在此页面看到问题的一个示例:http://www.tek-tips.com/viewthread.cfm?qid=1654452

我自己的例子如下。

输入:<ex><context>собр<stress>а</stress>ние</context> акцион<stress>е</stress>ров — <stress>aa</stress>ndeelhoudersvergadering</ex>(已经是有效的xml)

预期输出:<ex><context>собр<stress>а</stress>ние</context> акцион<stress>е</stress>ров — <stress>aa</stress>ndeelhoudersvergadering</ex></context>актион之间有空格。

实际输出:

<ex>
<context>собр
<stress>а</stress>ние</context>акцион
<stress>е</stress>ров — 
<stress>aa</stress>ndeelhoudersvergadering</ex>

(它删除了</context>актион之间的空格,这将使文字无法读取,并在每个标记后插入换行符)

我的代码是:

function TidyXml($inputXml)
    {
        $config = array(
            'indent'         => false,
            'output-xml'     => true,
            'input-xml'     => true,
        );

        $tidy = new tidy();
        $tidy->parseString($inputXml, $config, 'utf8');
        $tidy->cleanRepair();
        $cleanXml = tidy_get_output($tidy);
        return $cleanXml;
    }

我尝试更改了几个选项,但没有成功。

2 个答案:

答案 0 :(得分:2)

我找到了一个解决方案,但它有点骇人听闻,所以我仍然愿意接受更好的建议。

<pre>放在要验证的xml周围(这指示Tidy不要更改空格),然后修复输出-html设置为true的xml,然后删除<pre>和{{ 1}}换行符。

示例:

\n

答案 1 :(得分:0)

就我而言,我能够在html上运行替换以删除多个空行并阻止Tidy添加中断$html = preg_replace("/\n([\s]*)\n/", "\r\n", $html);