simplexml_load_string 可以用来处理 <br> 标签吗?
Can simplexml_load_string be made to handle <br> tags?
我有一个案例,我试图解析一大块 HTML,其中包含 <br>
个标签——也就是说,不是 <br />
。 simplexml_load_string 正确处理 <br />
,但抛出警告(并且无法 return 解析) <br>
:
simplexml_load_string(): Entity: line 1: parser error : Opening and ending tag mismatch: br line 1 and div [warning]
simplexml_load_string(): <div class='dummy_root'><div>Basic text.<br> More text.</div></div>
我不是将 <br>
放入文本中的人,所以我必须找到一种方法来处理它。我当然可以写一些预处理/清理/文本修改代码来用 <br />
s 替换 <br>
s,但我想我会检查一下是否有东西 "better"在这里做。有什么想法吗?谢谢!
你可以做的是 replace/remove <br>
标签,如下所示:
simplexml_load_string(str_replace("<br>", "", $string));
虽然 SimpleXML 扩展没有 HTML 解析模式,但 DOM 扩展有,并且一旦解析,它们共享相同的内部代码。
所以你可以这样解析文档:
- 创建一个
DOMDocument
对象。
- 用 the
loadHTML
method 解析文档。
- "Import" 使用
simplexml_import_dom
函数将结果转换为 SimpleXML。请注意,这不会重新解析文档,它只是将内部表示重新包装在不同的 PHP 对象中。
例如
$dom = new DOMDocument;
$dom->loadHTML($html);
$sxml = simplexml_import_dom($dom);
结果是一个您可以正常使用的 SimpleXML 对象。
我有一个案例,我试图解析一大块 HTML,其中包含 <br>
个标签——也就是说,不是 <br />
。 simplexml_load_string 正确处理 <br />
,但抛出警告(并且无法 return 解析) <br>
:
simplexml_load_string(): Entity: line 1: parser error : Opening and ending tag mismatch: br line 1 and div [warning]
simplexml_load_string(): <div class='dummy_root'><div>Basic text.<br> More text.</div></div>
我不是将 <br>
放入文本中的人,所以我必须找到一种方法来处理它。我当然可以写一些预处理/清理/文本修改代码来用 <br />
s 替换 <br>
s,但我想我会检查一下是否有东西 "better"在这里做。有什么想法吗?谢谢!
你可以做的是 replace/remove <br>
标签,如下所示:
simplexml_load_string(str_replace("<br>", "", $string));
虽然 SimpleXML 扩展没有 HTML 解析模式,但 DOM 扩展有,并且一旦解析,它们共享相同的内部代码。
所以你可以这样解析文档:
- 创建一个
DOMDocument
对象。 - 用 the
loadHTML
method 解析文档。 - "Import" 使用
simplexml_import_dom
函数将结果转换为 SimpleXML。请注意,这不会重新解析文档,它只是将内部表示重新包装在不同的 PHP 对象中。
例如
$dom = new DOMDocument;
$dom->loadHTML($html);
$sxml = simplexml_import_dom($dom);
结果是一个您可以正常使用的 SimpleXML 对象。