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);

DBに保存されている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;&from R&Dは、>や<などと同じように変更する必要があります。

よろしく、

4

1 に答える 1

1

DBに保存されているXMLが無効です。要素の値は、保存する前にエスケープする必要があります。そうしないと、今の問題が正確に発生します。

ただし、 HTMLとしてDOMにロードし、文字列に保存することで修正できる場合があります。すでに無効になっているため、パーサーが希望どおりに動作するという保証はありません。

于 2012-05-24T11:51:09.560 に答える