0

我正在尝试使用 XML 创建一个 zend_form,传递的 XML 包含所有标签,所以我不能使用htmlspecialchars(),因为标签 < > 将被编码,这是我不想要的。是否有任何简单的方法来仅编码作为标签文本值的元素(标签之间的内容)?

$xml = sprintf('<?xml version="1.0" encoding="UTF-8"?><form><localhost><formmanager><formpage><elements>%s</elements></formpage></formmanager></localhost></form>',
                                $r['form_template']);
$config = new Zend_Config_Xml($xml, 'localhost');
$form = new Zend_Form($config->formmanager->$formName);

保存在数据库中的 xml 的摘录:

<questionTechnicalServices>
<type>MultiCheckbox</type>
<options>
<class>rule2 standard basic2 starter business spotlight</class>
<label>Technical Services</label>
<multioptions>
<item-ContractLaboratoryandtestingServices>Contract Laboratory and testing Services</item-ContractLaboratoryandtestingServices>
<item-ContractRDDesignandEngineering>Contract R&D, Design and Engineering</item-ContractRDDesignandEngineering>
<item-ContractSterilization>Contract Sterilization</item-ContractSterilization>
<item-CoilingRespoolingWinding>Coiling/Respooling/Winding</item-CoilingRespoolingWinding>
<item-OthersTechnicalServices>Others</item-OthersTechnicalServices>
</multioptions>
</options>
</questionTechnicalServices>

来自研发的 & 需要更改&amp;为任何 > 或 < 等。

问候,

4

1 回答 1

1

保存在 DB 中的 XML 无效。元素值在存储之前应该被转义。不这样做会导致您现在遇到的问题。

但是,您可以通过将其作为 HTML 加载到DOM中并将其保存回字符串来更正它。尽管由于它已经无效,但不能保证任何解析器都会按照您的意愿行事。

于 2012-05-24T11:51:09.560 回答