【问题标题】:What's the best way to extract links to images from CSS files with PHP?使用 PHP 从 CSS 文件中提取图像链接的最佳方法是什么?
【发布时间】:2011-10-03 02:32:06
【问题描述】:

我想从 CSS 文件中找到所有图片的链接。

例如

background-image: url(images/abc123.jpg);

我找到了一个名为 CSS parser 的 PHP 类,但它似乎没有非常大的 API。有没有更好的 CSS 解析器?

我也需要能够在提取文件后修改文件中的链接。

谢谢。

【问题讨论】:

  • 可以使用 preg_match 和 preg_replace 吗?对于这种情况,应该是一个非常简单的正则表达式。
  • 唯一的问题是,在 CSS 中指定图片 url 有很多不同的方法。我希望有一个很好的解析器可以为我完成所有的艰苦工作。
  • 实际上并没有那么多。每张图片都以 .jpg、.gif 或 .png 结尾,对吗?所以你的正则表达式就像 /(.*\.[png|gif|jpg]/
  • 是的,但可能是background-image: url(image.jpg);background-image: url('image.jpg');background-image: url("image.jpg");background: #ffffff url('image.jpg') 或... 你明白我的意思了吗?情节变厚了。
  • 是的,这是真的,但我想从开头的括号开始。你不需要颜色,所以它们会被忽略,但是我的意思是,最好是一个花哨的 css 解析器来为你做这件事,但作为最后的手段,我很确定正则表达式不会那么难。

标签: php css image parsing


【解决方案1】:
function getImageUrls($input_string) {
   $matches = array();
   preg_match_all('/url\((.+?)\);/i', $input_string, $matches);
   return preg_replace('/url\((.+?)\);/i', '$1', $matches);
}

反正就是这样。拉出匹配项,然后对其进行格式化以仅保留 url 路径。

【讨论】:

  • 你也可以遍历数组并取出任何引号。
  • 我建议去掉表达式中的分号,因为很多时候背景图片是这样写的:background: url(xxx.png) no-repeat;
猜你喜欢
  • 1970-01-01
  • 2019-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-04
  • 2023-03-18
  • 1970-01-01
相关资源
最近更新 更多