我需要从字符串中通过正则表达式获得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时,您不需要输入四次完整匹配。
请注意,您还可以在那里放置一些可选的特性,以确保捕获所有背景图像声明,例如额外的空白等。