php - 正则表达式:在背景图像 CSS 中查找 URL,遇到问题

标签 php regex screen-scraping

这是我的正则表达式代码:

preg_match_all('/background[-image]*:[\s]*url\(["|\']+(.*)["|\']+\)/', $css, $matches, PREG_SET_ORDER);

它寻找如下所示的 CSS:

background:url('../blah.jpg');

我遇到的问题是我抓取的一些 CSS 看起来像这样:

background:transparent url('../blah.jpg');
background:transparent no-repeat url('../blah.jpg');

我不是正则表达式方面的专家,所以我想知道如何让它跳过冒号之后和 URL 之前的任何内容。

最佳答案

除非我跳过任何内容,否则应该会捕获所有图像。

preg_match_all('~\bbackground(-image)?\s*:(.*?)\(\s*(\'|")?(?<image>.*?)\3?\s*\)~i',$str,$matches);
$images = $matches['image'];
print_r($images);

关于php - 正则表达式:在背景图像 CSS 中查找 URL,遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9893078/

相关文章:

screen-scraping - 替代 HtmlUnit

python - 如何使用Selenium获取 parking 价格?

python - 从图书馆目录中抓取信息

php - 获取未定义的值 AJAX JSON

PHP MYSQL 手动更新数据库中的 DATE 和 TIME 字段

php - php中的可变长度数据包

PHP URL 正则表达式和参数

javascript - 我有很多重复的 JavaScript 代码,希望得到帮助来清理它

python - 使用正则表达式分隔单词和数字

PHP: session.auto_start