enl*_*loz 4 php replace numbers
我的麻烦是将包含各种字符的字符串中的数字相乘.
例如,
输入:
$k = 2;
$input = '<div style="padding:10px 15px; font-size:1em ;height:2%;"></div>';
Run Code Online (Sandbox Code Playgroud)
输出:
<div style="padding:20px 30px; font-size:2em ;height:4%;"></div>
Run Code Online (Sandbox Code Playgroud)
编辑
$k可以是任何整数(0-9).$input字符串中的所有数字都乘以$k.
net*_*der 10
$input = '<div style="padding:10px 15px; font-size:1em ;height:2%;"></div>';
$output = preg_replace_callback('/([0-9]+)\s*(px|em|%)/i', function($matches){
$k = 2;
return ($matches[1] * $k).$matches[2];
}, $input);
Run Code Online (Sandbox Code Playgroud)
以上仅替换数字px,em或者%.
您还可以$k自己提供lambda函数,以获得更大的灵活性:
$k = 2;
$output = preg_replace_callback('/([0-9]+)\s*(px|em|%)/i', function($matches) use ($k){
return ($matches[1] * $k).$matches[2];
}, $input);
Run Code Online (Sandbox Code Playgroud)
$k = 2;
$f = function ($i) use ($k) {
return $i[0] * $k;
};
$s = '<div style="padding:10px 15px; font-size:1em ;height:2%;"></div>';
echo preg_replace_callback('/[0-9]+/', $f, $s);
Run Code Online (Sandbox Code Playgroud)
这使用自PHP 5.3以来可用的匿名函数.如果要在PHP <5.3中使用它,则必须使用create_function()创建lambda函数.