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);
ログイン後にコピー
<値>64.90値>こんにちは
<価格>53.64価格>元気です
<値>80.90< / 値>彼はとても良いです
<価格>53.64価格>ははは
<価格>40.90値>ははは
<価格>53.64価格>ああああ
上記のコードは、
の間の数値を、小数点以下 2 桁を残して元の数値の 80% にします。 ; 元の数値の 60% の間の数値 (小数点以下 2 桁)
ただし、
の間の数値は 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));
ログイン後にコピー
に変更します。