han*_*ker 7 php xml whitespace space tidy
在将其加载到DomDocument之前,我想使用PHP Tidy来确保我的xml有效.
但是,我不想让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>
Run Code Online (Sandbox Code Playgroud)
(它删除了之间的空格</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;
}
Run Code Online (Sandbox Code Playgroud)
我尝试改变了几个选项,但没有成功.
我找到了一个解决方案,但它有点黑客,所以我仍然愿意寻求更好的建议。
放置<pre>
您想要验证的 xml(这指示 Tidy 不要更改空格),然后修复 xml,将 output-html 设置为 true,然后删除<pre>
和\n
换行符。
例子:
$config = array(
'indent' => false,
'indent-attributes' => false,
'output-html' => true,
'input-xml' => true,
'wrap' => 0,
'vertical-space' => false,
'new-inline-tags' => 'context,abr,stress',
'new-blocklevel-tags' => 'def,ex,examples'
);
$tidy = new tidy();
$inputXml = "<pre>" . $inputXml . "</pre>";
$validXml = $tidy->repairString($inputXml, $config, 'utf8');
$cleanXml = str_replace("\n", "", $validXml);
$cleanXml = substr($cleanXml, strlen("<pre>"), strlen($cleanXml));
$cleanXml = substr($cleanXml, 0, strlen($cleanXml)-strlen("</pre>"));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2606 次 |
最近记录: |