Dyl*_*lan 9 php strip-tags web-scraping
我使用该strip_tags()功能,但我需要删除一些标签(及其所有内容).
例如 :
<div>
<p class="test">
Test A
</p>
<span>
Test B
</span>
<div>
Test C
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
让我们说,我需要摆脱P和SPAN标签,并且只保留:
<div>
<div>
Test C
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
strip_tags 期望作为第二个参数,你想要保持标签.
在这个特殊的例子中,我可以使用,striptags($html, "<div>");
但我正在抓取的html和需要删除的标签一直不同.
我搜索了几个小时的功能,以满足我的需求,但找不到任何有用的功能.
有任何想法吗?
nic*_*ckb 11
使用正则表达式.这样的事情应该有效:
$tags = array( 'p', 'span');
$text = preg_replace( '#<(' . implode( '|', $tags) . ')>.*?<\/$1>#s', '', $text);
Run Code Online (Sandbox Code Playgroud)
该演示显示它无需替换所需的标签.
请注意,您可能需要对其进行更多调整,例如,以补偿标记中的空白或您的示例未演示的其他未知数.
以下是用于捕获带或不带属性的标记的正则表达式:
'#<(' . implode( '|', $tags) . ')(?:[^>]+)?>.*?<\/$1>#s'
Run Code Online (Sandbox Code Playgroud)