正在从HTML标记中删除属性


Removing attributes from HTML tags

可能的重复:
php:如何从html标记中删除属性
如何迭代Beautiful Soup元素的HTML属性?

我有一些HTML,如下所示:

<div class="foo">
  <p id="first">Hello, world!</p>
  <p id="second">Stack Overflow</p>
</div>

它需要像这样回来:

<div>
  <p>Hello, world!</p>
  <p>Stack Overflow</p>
</div>

我更喜欢Python解决方案,因为我已经在需要使用的程序中使用了BeautifulSoup。但是,如果PHP是更好的解决方案,我对它持开放态度。我认为sed正则表达式是不够的,尤其是在将来可能使用<文本中的符号(我不控制输入(。

这也适用于sed,<([a-zA-Z!]+([^>]>>然后只替换为第一组,<'1>

这在Python中使用Lxml很容易实现。

首先安装Lxml并尝试以下代码:

from lxml.html import tostring, fromstring
html = '''
<div class="foo">
  <p id="first">Hello, world!</p>
  <p id="second">Stack Overflow</p>
</div>'''
htmlElement = fromstring(html)
for element in htmlElement.cssselect(''):
    for key in element.keys():
        element.attrib.pop(key)
result = tostring(htmlElement)
print result