simplexml句柄引用实体

时间:2016-06-30 09:54:02

标签: php

输入字符串是:

<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或其他函数来解决html问题,但字符串来自外部来源,我无法控制它。我需要解析带有错误的HTML。

如何处理这个并获得这个元素的价值?

1 个答案:

答案 0 :(得分: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);