php preg_replace return 中间使用 (.*) 时首先匹配
php preg_replace return first match when use (.*) in middle
我有一些这样的代码:
$string = "background: #FFFFFF url('http://www.zxczxc.com/asd.jpg') 20px 100px no-repeat";
$value = preg_replace('/background: (.*)? ([0-9\.]+)([a-z\%]+)?/', '', $string);
如何让 preg_replace
变成 return 20px
而不是 100px
?
您的 (.*)?
与您的意图相反 ?
需要在里面,否则搜索是贪婪的,但是可选的。如果像素为负,您还需要一个可选的前导 -
。
$value = preg_replace('/background: (.*?) (-?[0-9\.]+)([a-z\%]+)?/','',$string);
我有一些这样的代码:
$string = "background: #FFFFFF url('http://www.zxczxc.com/asd.jpg') 20px 100px no-repeat";
$value = preg_replace('/background: (.*)? ([0-9\.]+)([a-z\%]+)?/', '', $string);
如何让 preg_replace
变成 return 20px
而不是 100px
?
您的 (.*)?
与您的意图相反 ?
需要在里面,否则搜索是贪婪的,但是可选的。如果像素为负,您还需要一个可选的前导 -
。
$value = preg_replace('/background: (.*?) (-?[0-9\.]+)([a-z\%]+)?/','',$string);