想删除html标签内的任何属性,我认为这可以使用正则表达式实现,但我不擅长使用正则表达式。
尝试使用str_replace,但这不是正确的方法。我搜索了类似的问题,但没有找到任何问题。
- 示例:**
在变量中获得如下HTML标记:
$str = '
<p class="class_style" style="font-size: medium; line-height: normal; letter-spacing: normal;">content</p>
<span class="another_class_style" style="font-size: medium; line-height: normal; letter-spacing: normal;">content</span>
<ul class="another_class_style" style="background:#006;"></ul>
<li class="another_class_style" style=" list-style:circle; color:#930;">content</li>';
调用某个preg_match()
$new_str = preg_match('', $str)
- 预期产出:**
$new_str = '
<p>content</p>
<span>content</span>
<ul></ul>
<li>content</li>';
请注意,我不打算剥离的html标签,而我只是需要删除任何标签元素的标签。
php strip_tags() isn't an option
会很感激你的帮助。
3条答案
按热度按时间zvms9eto1#
虽然regex可以完成这个任务,但通常鼓励使用DOM函数来过滤或其他HTML操作。下面是一个可重用的类,它使用DOM方法来删除不需要的属性。您只需设置所需的HTML标记和属性,它就会过滤掉不需要的HTML部分。
这个类使用
strip_tags
两次--一次是为了快速删除不需要的标签,然后在属性从剩余的标签中删除之后,它删除由DOM函数(doctype、html、body)插入的额外标签。setAllowed函数有两个数组--一组允许的标签和一组允许的属性(如果你以后决定保留一些)。我修改了你的输入字符串,在某个地方包含一个添加的tabindex=“1”属性来说明过滤。$clean的输出是:
6jjcrrmo2#
将返回:
但是请不要使用正则表达式来解析HTML,使用DOM解析器。
jei2mxaa3#
在php中删除html标签最简单的方法是
strip_tags()
或者您可以通过