function foo($m){ return sprintf('%s%.2f', $m[1], $m[2] * ($m[1] == '<value>' ? 0.8: 0.6)); } $p = preg_replace_callback('/(<value>|<price>)([\d.]+)/', "foo", $s);
2a12cc85bc2d6ead78baa7096b03a4a364.90cb8e0afa29105ae9463e55473c96400fこんにちは
be6e72192b1ecfed16b997c8fb135bd353.645b23f6e3ad367b690bc6881e9fce472b元気です
2a12cc85bc2d6ead78baa7096b03a4a380.907b6e4c320c2452f95b2dc9db7a784b854b175f9a50d57c75316becd702e959dc の間の数値を、小数点以下 2 桁を残して元の数値の 80% にします。 ; 元の数値の 60% の間の数値 (小数点以下 2 桁)
ただし、a855a46fb1a45f2fb97062762dd59e78a68909029b5980ab0236b064252fbf6f の間の数値は 60%、70%、80% にしたいです。 , 元の数値の 90% 小数点以下 2 桁をランダムに保持します
ご存知の場合は、コードを直接教えてください。ありがとうございます
ディスカッションへの返信 (解決策)
rand の乗算
、
計算内の 0.6 を rand(6 , 9)/10
return sprintf('%s%.2f', $m[1], $m[2] * ($m[1] == '<value>' ? 0.8: rand(6,9)/10));
に変更します。