【问题标题】:Disabling styles in HTML tags [duplicate]禁用 HTML 标记中的样式 [重复]
【发布时间】:2013-02-12 15:27:23
【问题描述】:

如何禁用 HTML 标签中的样式,以便

"<b style="color:red;">"

改变

"<b>"

【问题讨论】:

  • 我不能,因为我在手机上。

标签: php html


【解决方案1】:

您可以使用正则表达式的强大功能...

$input = '<span style="color:red;">Example</span>';
$html = preg_replace('/(<[^>]+) style=".*?"/i', '$1', $input);

echo $html;

这会输出&lt;span&gt;Example&lt;/span&gt;

【讨论】:

  • 如果样式有点棘手(例如多行或包含引号),它将无法按预期工作
  • 这仅适用于单个标签。从许多标签中,您应该形成style="[^"]*" 之类的表达式
  • @tmuguet 它不适用于换行符,但可以处理 &lt;span style="color:red;font-weight:bold;background-image:url(\'img.jpg\';"&gt;Example&lt;/span&gt;,例如。
  • @MarcellFülöp 我用几个标签测试了我的表达:'&lt;span style="color:red;font-weight:bold;background-image:url(\'img.jpg\';"&gt;Example&lt;/span&gt;&lt;p style="color:red;"&gt;Blah&lt;/p&gt;'
  • @SteveFenton 我认为它不适用于&lt;span style="color:red;font-weight:bold;background-image:url(\"img.jpg\";"&gt;Example&lt;/sp‌​an&gt;
【解决方案2】:

最安全的方法是使用 DOM 解析器(例如 http://php.net/manual/en/book.dom.php),遍历所有文档以找到 style 属性并将其删除。

【讨论】:

  • +1 我真的不明白为什么这被否决了。 DOM 就是要走的路……
  • @bažmegakapa -1 因为它更多的是评论而不是答案。发布两行代码比实际编写繁琐的 DOM 遍历和操作更容易。
  • @mario 在我看来,如果你认为这不是一个答案(我,嗯,甚至可能同意),有一个标志按钮。 downvote 按钮显示“这个答案没有用。”,虽然它显然很有用。
  • @bažmegakapa 我自己无法支持正则表达式答案,因为这是副本中的一个精确副本。尽管我不同意 Stackoverflow Use-DOM-for-everything 模因。这个问题可以说是愚蠢的,因为我们不知道用例(随机 HTML 与模板输出),所以没有说正则表达式或 DOM 是否更合适。 (实际上,为数百个简短的 HTML sn-ps 启动 libxml2 是愚蠢的 IMO)。
  • @mario +1 对此评论,但不幸的是,我没有看到您在正则表达式答案中提出的这些非常重要和聪明的观点。如果一个人无知,或者不知道他在做什么,最好使用 DOM...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-07
  • 1970-01-01
  • 1970-01-01
  • 2013-10-05
  • 2021-02-22
  • 1970-01-01
  • 2013-03-17
相关资源
最近更新 更多