Php 禁用除<;a>;

Php 禁用除<;a>;,php,html,tags,html-entities,Php,Html,Tags,Html Entities,我想编码(htmlentities)或禁用除标记以外的所有标记 如何实现这一点?使用HTML实体后,使用RegExp将链接转换回: preg_replace('/&lt;(\/?a(?:|\s[\S\s]+?))&gt;/i', '<$1>', $string); preg\u replace('/(\/?a(?:|\s[\s\s]+?)/i',''$string); 如果要删除其他标记,请使用: strip_tags($string, '<a>');

我想编码(
htmlentities
)或禁用除
标记以外的所有标记


如何实现这一点?

使用HTML实体后,使用RegExp将链接转换回:

preg_replace('/&lt;(\/?a(?:|\s[\S\s]+?))&gt;/i', '<$1>', $string);
preg\u replace('/(\/?a(?:|\s[\s\s]+?)/i',''$string);
如果要删除其他标记,请使用:

strip_tags($string, '<a>');
strip_标签($string,”);

可能重复的@Juhana OP需要对所有HTML标记进行编码,但允许的标记除外,而不是将其剥离。您应该在a之后添加\s。现在AFAIU将允许标签:音频、缩写、acronim等@RiaD感谢您的指点。对于本例,我已将
a.*?
替换为
a(?:\s[\s\s]+?)
。更新还包括对换行符的匹配,因为
也是一个有效的HTML锚定标记。