Php 剥去末端</部门>;如果开始标记是断开的正则表达式
在过去有关stackoverflow的帖子中找不到有效的解决方案。如果开始标签断开,我需要剥去末端Php 剥去末端</部门>;如果开始标记是断开的正则表达式,php,regex,preg-replace,Php,Regex,Preg Replace,在过去有关stackoverflow的帖子中找不到有效的解决方案。如果开始标签断开,我需要剥去末端 例如,如果: div id=“某物”>某物 div class=“某物”>某物 div>Something PS我不喜欢使用htmlPurifier或重载函数。这些是我需要解决的唯一例子。只需一个简单的正则表达式即可。一种可能的方法是使用DOMDocument提供的自动修复程序: $html = <<<'LOD' div id="something">Something&l
例如,如果:
div id=“某物”>某物
div class=“某物”>某物
div>Something
PS我不喜欢使用htmlPurifier或重载函数。这些是我需要解决的唯一例子。只需一个简单的正则表达式即可。一种可能的方法是使用DOMDocument提供的自动修复程序:
$html = <<<'LOD'
div id="something">Something</div>
div class="something">Something</div>
div>Something</div>
LOD;
libxml_use_internal_errors(true);
$dom = new DOMDocument();
$dom->loadHTML('<root>' . $html . '</root>', LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
echo substr($dom->saveHTML(), 6, -8);
孤立的结束标记会自动删除,孤立的
会被替换为html实体。你不需要正则表达式,你只需要进行字符串搜索,如果它不包含“”,就可以修复它,但是你最好使用像htmlPurifier这样的库。这些示例非常先进,可以通过字符串搜索来完成,但是如果有嵌套的div,比如div>A div嵌套的div
,会怎么样呢?这更棘手@因为我真的需要使用htmlPurifier来支持上面的例子吗?看起来太过分了。@HasseBjörk不会有嵌套的div。对于上面的例子,我只需要一个简单的正则表达式。无论出于什么原因,我自己都无法理解。您的示例字符串是。问题太不清楚了,它们出现在什么上下文中,标记结构有多复杂,一般来说,当您必须修复HTML时,正确的答案是“在提供者一侧”。