我需要获取一个包含自闭输入标记的HTML表,该表从客户端发布到服务器并将其解析为simpleXML,以便通过PHPExcel将其转换为Excel文件。
问题是浏览器正在从输入标签中删除自闭项标记,这会在我将其传递给simplexml_load_string函数时产生错误。
$table = '<table><tr><td><input name="test" value="1" type="checkbox" ></td></tr></table>';
$xml = simplexml_load_string($table);
如果我可以停止浏览器更改代码:
<input name="test" value="1" type="checkbox" />
为:
<input name="test" value="1" type="checkbox" >
这可以解决我的问题,但我不知道或似乎无法找到如何做到这一点?
有没有办法允许simplexml_load_string接受没有自我结束标记的输入,或者即使还有其他我缺少的东西?
答案 0 :(得分:1)
有一个技巧:the DOM extension can parse HTML,包括你在这里的非闭合标签;和SimpleXML can "import" a DOM object(实际上没有重新解析任何东西,因为它们在下面使用相同的内存结构)。
它应该如此简单:
$dom = new DOMDocument;
$dom->loadHTML($html);
$sx = simplexml_import_dom($dom);