php正则表达式删除除超链接之外的html标签的属性<a> tags</a>

时间:2013-10-17 10:38:35

标签: php regex attributes preg-replace

请建议我使用prege_replace的PHP regex删除除<a>标记之外的HTML标记中的所有属性。

我已经尝试过:preg_replace("/<([a-z][a-z0-9]*)[^>]*?(\/?)>/i",'<$1$2>',$htmltext);

它适用于所有HTML标记,但对于<a>标记,它会删除href,title和target属性。

请建议我在上述正则表达式中进行必要的更改,或者请分享正常工作。

提前致谢。

1 个答案:

答案 0 :(得分:3)

to remove all the tags from HTML tags except <a> tag.

不需要正则表达式,您可以使用strip_tags function

$html = strip_tags($html, '<a>');

更新:preg_replace仅从<a>以外的HTML代码中删除所有属性。你可以使用这种基于正则表达式的负前瞻:

$htmltext = preg_replace("~<(?!a\s)([a-z][a-z0-9]*)[^>]*?(/?)>~i",'<$1$2>', $htmltext);