gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 12:59:09 28 4
gpt4 key购买 nike

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

但是,我不希望 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;
}

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

最佳答案

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

<pre>在要验证的 xml 周围(这指示 Tidy 不要更改空格),然后将 output-html 设置为 true 修复 xml,然后删除 <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>"));

关于PHP Tidy 删除空格并插入换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15147711/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com