使用PHP从文本中删除内联CSS和类

时间:2011-01-31 06:39:29

标签: php css

我有这种形式的文字:

aaaa bbbbb cccccc a:link {text-decoration:none; font-family:Verdana,Arial,Helvetica,sans-serif; color:#ffffff; } a:悬停{text-decoration:下划线; } .intro {font-size:11px; font-weight:bold; line-height:18px; color:#ffffff; padding-left:25px; font-family:Verdana,Arial,Helvetica,sans-serif; } ddddd eeeeee

我想删除所有类的css。输出应为:

aaaa bbbbb cccccc ddddd eeeeee

aynone能告诉我一个preg_match的例子吗?我喜欢一个例子来删除brakets {}之间的所有东西,但我需要的是,删除了所有css的内容。

由于 NIK

1 个答案:

答案 0 :(得分:0)

从该字符串中删除非CSS部分会遇到的麻烦是,很难确定哪些部分是CSS而哪些部分不是。

你说你希望留下aaaa bbbbb cccccc ddddd eeeeee,但实际上从原始字符串开始,aaaa bbbbb cccccc将是CSS选择器的有效部分。他们会选择名为<aaaa><bbbbb><cccccc>的元素。

当然,这些不是有效的HTML元素,但CSS可以用于将样式应用于任意XML和HTML,因此它们很容易成为有效的元素。如果您使用的是xhtml,它们可能会在自定义名称空间下非常合理地显示在您的页面中。

但它变得更糟。我假设文本实际上不是aaaa bbbbb cccccc,而是一个任意的单词串。在这种情况下,请考虑它可能是一个像“我很坚强”的句子。在这种情况下,strong将是您要删除的字符串的一部分,但<strong>也是一个有效的HTML元素(就此问题而言<I>),所以即使你是只是坚持下去就不可能在上面的字符串中告诉它是否是一个CSS选择器或要保留的文本字符串的一部分。你根本无法编写一个在所有情况下都完全可靠的正则表达式。

正如你所说,你可以很容易地删除{}括号内的所有内容,但是大括号外的选择器很难与周围的文本可靠地分开。