通过正则表达式从background-image属性获取URL


Get URL from background-image property by regular expression

我需要从字符串中通过正则表达式获得URL。我的代码:

$mystring = file_get_contents($urlstr);
preg_match('/background-image: url'('''''/'/(.*png)|background-image:url'('''''/'/(.*jpg)|background-image: url'((.*jpeg)|background-image: url'('''''/'/(.*gif)/', $mystring, $A);
$prw = 'http://'.end($A);

我哪里做错了?

你可以试试

background-image:[ ]?url'(['"]?(.*?'.(?:png|jpg|jpeg|gif))

,它将匹配这个regex101示例中的url。

我认为你需要的正则表达式是。

'background'-image:'surl'((.*(jpg|png|gif|jpeg))'

您忘记了原始正则表达式中的转义-,并且当您可以在扩展中执行or时,您不需要输入四次完整匹配。

请注意,您还可以在那里放置一些可选的特性,以确保捕获所有背景图像声明,例如额外的空白等。