关于正则表达式:除链接外的所有HTML标签

关于正则表达式:除链接外的所有HTML标签

Strip all HTML tags except links

我正在尝试编写一个正则表达式以除去链接(分别为 and 标记)之外的所有HTML。它不一定是100%安全的(我不担心注入攻击或任何其他正在解析内容的内容 已被批准并发布到SWF电影中)。

我使用的原始" strip标签"正则表达式是<(.|\ )+?>,并且我尝试将其修改为<([^a]|\ )+?>,但是当然可以允许其中包含a的任何标签,而不是其中包含a的标签。 开始,有一个空格。

并不是说它真的很重要,但是万一有人想知道我是在ActionScript 3.0中为Flash电影编写的。


1
<(?!\\/?a(?=>|\\s.*>))\\/?.*?>

试试这个。 p标签有类似的东西。为他们工作,所以不明白为什么不这样做。使用否定前瞻来检查它是否不匹配(以一个可选的/字符作为前缀),其中(使用肯定的前瞻)一个(带有可选的/前缀)后跟一个>或一个空格,填充然后是>。然后匹配直到下一个>字符。将此与

1
s/<(?!\\/?a(?=>|\\s.*>))\\/?.*?>//g;

这应该只留下开始和结束标签


通常,这种方法存在问题。正则表达式最适合"平面"文本匹配-嵌套数据将正则表达式引擎推入其未设计的区域。常规HTML解析需要解析器而不是正则表达式引擎(如果您需要完整的技术细节,请使用Google了解常规语言和上下文无关语言之间的区别)。

通过用空字符串或它们的实体等效项替换/ /来剥离所有标记很容易,但是使用正则表达式选择性地筛选HTML将很容易受到各种意外或恶意输入的破坏。


我一直在继续,但是我无法经常推荐regexr。测试这种类型的东西真是太棒了。


干得好:

1
{<(?!i|b|h[1-6]|/i|/b|/h[1-6][\\s|>|/])[^>]*>}

怎么样

1
2
<[^a](.|\
)+?>


strip_tags()执行此操作。

在这里,我包括所有

标记并输出整理的版本:

1
2
3
cat input.htm | tr -d '\
' | php -r '$input=fgets(STDIN); echo strip_tags($input,"<p>
<font>");' | tidy -i -wrap 0 -o output.htm


推荐阅读

    linux时间命令修改?

    linux时间命令修改?,时间,系统,信息,命令,大陆,国家,终端,时分,时区,日期,lin

    linux路由表修改命令?

    linux路由表修改命令?,网络,系统,地址,信息,数据,通信,发行,命令,文件,终端,

    linux动态链接库命令?

    linux动态链接库命令?,代码,项目,工程,电脑,网上,文件,程序,静态,命令,目录,

    linux修改地址命令?

    linux修改地址命令?,地址,系统,代码,网络,服务,信息,密码,命令,管理,基础,lin

    修改主机名命令linux?

    修改主机名命令linux?,系统,地址,服务,主机名,网络,情况,名称,查询系统,异

    linux修改账户的命令?

    linux修改账户的命令?,密码,系统,状态,名称,信息,用户,命令,位置,软件,管理,L

    linux中修改密码命令?

    linux中修改密码命令?,密码,系统,服务,名称,软件,信息,时间,状态,命令,用户,l

    linux修改日期命令?

    linux修改日期命令?,时间,系统,命令,信息,工具,工作,服务,代码,日期,终端,lin

    linux删除硬链接命令?

    linux删除硬链接命令?,工作,数据,系统,信息,链接,命令,设备,名称,不了,概念,l

    linux创建软链接命令?

    linux创建软链接命令?,工作,地址,位置,系统,信息,管理,服务,名字,链接,文件,

    linux命令行修改字体?

    linux命令行修改字体?,系统,终端,字体,实时,适当,等级,工具,颜色,字符,窗口,l

    linux命令修改gid?

    linux命令修改gid?,系统,管理,情况,密码,代码,工具,时间,地方,数字,命令,Linu

    取消修改linux命令?

    取消修改linux命令?,工作,地址,状态,系统,信息,命令,电脑,管理,目录,编辑,lin

    linux命令正则表达式?

    linux命令正则表达式?,工作,环境,基础,网络,单位,名称,平台,信息,正规,管理,L

    修改linux编码命令?

    修改linux编码命令?,系统,文件,命令,情况,标准,工作,格式,字符集,以下,方式,l

    linux文件命令修改?

    linux文件命令修改?,系统,信息,工作,档案,图片,名称,命令,地方,代码,文件,lin

    linux用命令修改文件?

    linux用命令修改文件?,系统,名称,数字,文件,状态,命令,权限,目录,文件夹,用

    linux中修改保存命令?

    linux中修改保存命令?,状态,档案,系统,电脑,命令,编辑,文件,终端,模式,文件

    linux中软链接命令?

    linux中软链接命令?,位置,设备,数据,信息,系统,文件,链接,地址,对比,源文件,L

    linux命令链接网页?

    linux命令链接网页?,网络,信息,系统,网址,工具,网站,状态,发行,数据,命令,Lin