我有一个表格,我试图确保我处理特殊字符。 表单中的一个字段是Title,在表单中定义为输入类型=' text'。 作为测试输入的值类似于(Ann& Andy' First" Test" Pic)。 为清楚起见,输入的文本只是括号内的内容,不包括括号。
我将标题发布到变量中,如下所示:
if (isset($_POST["submitupdate"])) {
$form_title = htmlspecialchars($_POST["title"], ENT_QUOTES, 'UTF-8');
}
在进程结束时,我将$ form_title中的值写入XML节点:
$xml = simplexml_load_file('mydata.xml');
$sxe = new SimpleXMLElement($xml->asXML());
$newparent = $sxe->addChild("Book");
$newparent->addChild("Title", $form_title);
$sxe->asXML('mydata.xml');
我检查XML文件,发现文件中的文字显示为Ann & Andy's First "Test" Pic
,而不是我期望得到的文件,应该是Ann & Andy$apos;s First "Test" Pic
。
要回答最明显的问题,我使用的是ENT_QUOTES,而不是ENT_NOQUOTES。 为了确保我不会失去理智,我尝试了两种方式并获得了完全相同的结果。
我不能让我的生活对此有任何意义。有什么想法吗?
标题和问题更新了关于deceze的建议。