2017-05-25 50 views
0

我有一些像这样的代码:PHP preg_replace函数返回的第一场比赛时使用(*)在中

$string = "background: #FFFFFF url('http://www.zxczxc.com/asd.jpg') 20px 100px no-repeat"; 
$value = preg_replace('/background: (.*)? ([0-9\.]+)([a-z\%]+)?/', '$2', $string); 

我怎样才能得到preg_replace返回20px而不是100px

+0

你能分享你的预期产出吗? –

+0

我希望返回20px – SahebSoft

+1

您想要退回或更换? – hassan

回答

2

您的(.*)?与您想要的?需要在里面的内容相反,否则搜索是贪婪的,但可选。您还需要一个可选的前导-,因为像素为负值。

$value = preg_replace('/background: (.*?) (-?[0-9\.]+)([a-z\%]+)?/','$2',$string); 
+1

为你的麻烦补偿不多;-)这里没有兔子洞。 –

+1

@ Fred-ii-谢谢,那些wascally wabbits .. – chris85