Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php simplexml\u load\u字符串是否可以处理<;br>;标签?_Php_Xml_Simplexml - Fatal编程技术网

Php simplexml\u load\u字符串是否可以处理<;br>;标签?

Php simplexml\u load\u字符串是否可以处理<;br>;标签?,php,xml,simplexml,Php,Xml,Simplexml,我有一个例子,我试图解析一大块HTML,其中包含标记——也就是说,不是。simplexml\u load\u字符串正确地处理,但抛出警告(并无法返回解析): 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'>

我有一个例子,我试图解析一大块HTML,其中包含

标记——也就是说,不是

。simplexml\u load\u字符串正确地处理

,但抛出警告(并无法返回解析):

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>
simplexml\u load\u string():实体:第1行:解析器错误:开始和结束标记不匹配:br第1行和div[警告]
simplexml_load_string():基本文本。
更多文本。

我不是那个把

写进文本的人,所以我必须找到一种方法来处理它。我当然可以编写某种预处理/清理/文本咀嚼代码,用

s替换

s,但我想我应该检查一下这里是否有“更好”的事情要做。有什么想法吗?谢谢

您可以做的是替换/删除

标记,如下所示:

simplexml_load_string(str_replace("<br>", "", $string));
simplexml\u load\u字符串(str\u替换(“
”,“,$string));
尽管SimpleXML扩展没有HTML解析模式,但DOM扩展有,解析后,它们共享相同的内部代码

因此,您可以像这样解析文档:

  • 创建一个
    DOMDocument
    对象
  • 使用语法分析文档
  • 使用函数将结果“导入”到SimpleXML中。请注意,这不会重新解析文档,它只是将内部表示重新包装到不同的PHP对象中
  • e、 g


    结果是一个SimpleXML对象,可以正常使用。


    是HTML,而不是XML,XML需要关闭元素。你能用这个文件吗?dom的起点,或者使用简单的html而不是简单的xml。是的,这就是我的想法,或者类似的东西。我有点觉得权宜之计胜过了一个更深层次的、可以说更好的解决方案(比如探索htmlsimpledom),但这似乎处理得很好。谢谢大家。
    $dom = new DOMDocument;
    $dom->loadHTML($html);
    $sxml = simplexml_import_dom($dom);