使用PHP和Regex,如何从标签内删除所有不需要的样式,类或其他垃圾?
EG:
<span class="blah" style="blah" any other junk >...</span>
将被清除:<span>...</span>
。
我试图把这样的函数放在一起:
function cleanTag($html, $tagType='div'){
$html = // regex to clean out all tags of $tagType in $html
return $html;
}
我希望能够处理我设置为$tagType
的任何代码类型。
需要使用PHP - 我正在服务器端。感谢。
答案 0 :(得分:1)
如果您只想定位特定代码,则需要动态调整正则表达式,请务必使用preg_quote
以避免在$tagType
参数中进行正则表达式匹配。
以下功能适用于比前一个答案更严格的标签限制,例如:在功能代码之后尝试测试。
function cleanTag($html, $tagType = 'div') {
if ($tagType) {
// match specific tag
$tagType = preg_quote($tagType);
} else {
// match all tags
$tagType = '[\w\d]+';
}
return preg_replace("/<\s*($tagType).*?>/si", '<$1>', $html);
}
http://phpfiddle.org/main/code/9q7-bnr
文字说明:
/
<
匹配一个空心支架\s*
匹配零个或多个空格字符(空格,制表符,换行符)([\w\d]+)
/ ($tagType)
捕获字母数字/显式标记名称.*?>
匹配零个或多个字符,直到找到关闭标记/si
点字符匹配新行和不敏感的比较该字符串将整个匹配项替换为包含已捕获标记$1