【问题标题】:HTML within XML without breaking validityXML 中的 HTML 而不会破坏有效性
【发布时间】:2012-02-15 19:57:23
【问题描述】:

我希望有人可以帮助我解决以下问题。一天后我在砖墙上。

我正在尝试从在线商店数据库中获取产品描述并生成 XML 提要。 问题是描述包含 HTML,因此在浏览器中查看 XML 时会中断

这是代码行:-

echo    '<DESCRIPTION>' . $row['products_description'] . '</DESCRIPTION>';

我尝试了以下方法:-

echo    '<DESCRIPTION><![CDATA[' . $row['products_description'] . ']]></DESCRIPTION>';   

当我查看输出时,它首先会破坏 XML

<BR>

我知道 PHP 中的 htmlentities 但这不起作用,因为我从另一家商店获取 XML 以导入描述,并且它们在重新导入时无法正确显示

我希望有人可以提供帮助。感谢您花时间查看

【问题讨论】:

  • 能否提供制作的HTML?
  • 您的 XML 使用哪个 DTD/Shema?
  • 脚本生成 descriptions.xml
  • 当你说使用 CDATA 不起作用时,你是什么意思?

标签: php html xml


【解决方案1】:

先整理 HTML。

$config = array(
  'indent'         => true,
  'output-xhtml'   => true,
  'wrap'           => 200);

$tidy = new Tidy();
$tidy->parseString($row['products_description'], $config, 'utf8');
$tidy->cleanRepair();

echo    '<DESCRIPTION>' . $tidy. '</DESCRIPTION>';

您需要安装 libtidy extension 才能使用此功能。

【讨论】:

  • 什么不起作用?也许实体也需要转义。可以分享一下 HTML 吗?
  • 您的代码产生错误 PHP 致命错误:在第 393 行的 xmlbuilder.php 中找不到类 'tidy'
  • 我有一个错字并编辑了答案以修复它。我还澄清说,您需要为 tidy 启用扩展。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-07
  • 1970-01-01
  • 2011-11-02
  • 2013-01-29
相关资源
最近更新 更多