【问题标题】:Remove inline styles on an <img> tag and replace with a class删除 <img> 标记上的内联样式并替换为类
【发布时间】:2014-07-29 23:54:33
【问题描述】:

我正在处理图像繁重的 HTML 代码。问题是,这些图像带有我想删除的多余内联样式。这是一个例子:

<img src="Resources/Images/Desktop Advanced Manual 0 Welcome/3000186.png" style="z-index: 67;visibility: visible;mso-wrap-style: square;mso-width-percent: 0;mso-height-percent: 0;mso-wrap-distance-left: 9pt;mso-wrap-distance-top: 0;mso-wrap-distance-right: 9pt;mso-wrap-distance-bottom: 0;mso-position-horizontal: absolute;mso-position-horizontal-relative: text;mso-position-vertical: absolute;mso-position-vertical-relative: text;mso-width-percent: 0;mso-height-percent: 0;mso-width-relative: page;mso-height-relative: page;margin-left: 0.3pt;width: 346px;height: 113px;" />

虽然搜索和替换会很棒,但宽度和高度以及左边距等会随着每张图像而变化。

我一直在做的是去每个&lt;img&gt; 标签,删除每个标签中的内联样式并将其替换为class="screenshot"

完成后,代码如下所示:

<img src="Resources/Images/Desktop Advanced Manual 0 Welcome/3000186.png" class="screenshot" />

很棒 - 但是数百个文件中有数百个图像。

有人有办法更有效地做到这一点吗?我一点也不精通 PHP 或 JavaScript。也许一些很棒的正则表达式会有所帮助?

【问题讨论】:

  • 正则表达式几乎出现在每种编程语言中。你打算用哪一个?如果您决定了,请向我们展示一些尝试。
  • 删除图像元素并将其添加回来..是解决方案之一...否则您必须在每个 css 属性上使用 jquery 来取消它
  • 你确定——就像死定的——你要用正则表达式来做这个吗?如果是这样,您的正则表达式引擎的风格是什么?
  • 哦,完全没有死,确定我想用正则表达式来做这件事。我愿意接受任何对此有所帮助的事情——但请记住,我不是一个铁杆编码员。我是一名在线帮助开发人员。
  • 您是想在每次将 HTML 加载到浏览器中时即时执行此操作(这将是大量密集的重复处理),还是只在源代码中提前执行一次文件,以便在每次将 HTML 加载到浏览器时开始永久分离样式?

标签: html css regex


【解决方案1】:

匹配除引号之外的任何内容,后跟结束引号:

style="[^"]+"

[^"]+ 匹配任何不是" 的字符。在其后添加+ 表示“一次或多次”。

并将其替换为:

class="screenshot"

未对其进行测试,但它应该可以在 Notepad++(仅限 Windows)中使用。

更多信息here

【讨论】:

  • 但他想保持宽度/高度/等,所以也许可以style="([^"]+)margin-left 然后删除第一组?
  • @Zwade 这实际上很接近!唯一的问题是它也会删除style=" 部分......现在无法测试它,不在PC附近:(当我靠近PC时会更新
  • @Zwade Actaully 如果你用style="替换整个东西,也许它会起作用@
猜你喜欢
  • 2016-04-21
  • 2018-03-03
  • 2020-03-24
  • 2017-03-13
  • 1970-01-01
  • 2014-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多