2016-06-30 24 views
1

输入字符串是:simplexml的手柄报价为实体

<input type="hidden" value="CZĘŚCI"" name="userlogin">

<input type="hidden" value="CZĘŚCI'" name="userlogin">

如果我尝试用simplexml_load_string这个回报解析错误处理这个问题。

警告:simplexml_load_string():实体:行1:解析错误

我知道,这是不正确的HTML和我应该使用htmlspecialchars或等为功能sanitaze HTML,但串到我这里来的一个外部来源,我无法控制它。我需要解析错误的HTML。

如何处理此问题并获取此元素的值?

+0

simplexml_load_string($ XMLDATA '的SimpleXMLElement',LIBXML_NOCDATA | LIBXML_NOBLANKS); –

+0

在这里删除第二个关闭引用 - 'value =“CZĘŚCI”“'并添加根项目 - https://eval.in/598358 – splash58

+0

Manish Jesani,它返回false; splash58 - 我不能这样做,因为输入字符串可能是不同的html。 – stdex

回答

0

SimpleXml只能解析有效的XML。您正试图解析无效的HTML。

您可以使用DOM实现你想要什么:

$string = <<< HTML 
<input type="hidden" value="CZĘŚCI'" name="userlogin"> 
HTML; 

libxml_use_internal_errors(true); 
$dom = new DOMDocument; 
$dom->loadHTML('<?xml version="1.0" encoding="UTF-8"?>' . $string); 
echo $dom->getElementsByTagName('input')->item(0)->getAttribute("value"); 
libxml_use_internal_errors(false);