消毒内容:从亚马逊的内容中删除标记
问题描述:
我正在使用亚马逊网络服务获取各种商品的产品描述。问题是亚马逊的内容包含标记,有时会破坏我网页的布局(例如未封闭的DIV等)。消毒内容:从亚马逊的内容中删除标记
我想清理从亚马逊获得的内容。我的解决办法是做到以下几点(我的初步名单至今):
- 删除不必要的标记,如
div
,span
等,同时保持标签,如p
,ul
,ol
等 - 全部删除从所有的标签属性(例如好像有一些标签的
style
属性) - 删除多余的空格(如多个空格,回车换行,制表符等)
- 等等
在我试图构建我的解决方案之前,我想知道是否有人有更好的主意(或者已有的解决方案)。谢谢。
答
无论是最好的主意与否:
删除多余的空格:
preg_replace('/\s+/', ' ', trim($v))
删除HTML元素属性:
preg_replace('/<([^\s>]+) [^>]+>/', '<$1>', $v)
删除特定元素:
preg_replace('/<\/?(div|span)[^>]*>/', '', $v)
是否需要通过正则表达式来完成?它们可能是解析HTML的最糟糕的工具。 – 2011-01-31 12:28:07