Home >Backend Development >PHP Tutorial >怎么百分比指定字符间的数字

怎么百分比指定字符间的数字

WBOY
WBOYOriginal
2016-06-23 13:07:20997browse

64.90你好
53.64我好
80.90他好
53.64哈哈
40.90呵呵
53.64噢噢

比如$num是获取上面页面的内容




怎么把之间的数字等于原数字的80%保留小数点两位
之间的数字等于原数字的60%保留小数点两位



保留原页面的其它内容包括中文字


回复讨论(解决方案)

$s =<<< TXT<value>64.90</value>你好<price>53.64</price>我好<value>80.90</value>他好<price>53.64</price>哈哈<value>40.90</value>呵呵<price>53.64</price>噢噢TXT;echo preg_replace_callback('/(<value>|<price>)([\d.]+)/',  function($m) {return sprintf('%s%.2f', $m[1], $m[2] * ($m[1] == '<value>' ? 0.8 : 0.6));},  $s);
<value>51.92</value>你好<price>32.18</price>我好<value>64.72</value>他好<price>32.18</price>哈哈<value>32.72</value>呵呵<price>32.18</price>噢噢

楼上的大哥你给的代码报错啊 
Parse error: syntax error, unexpected T_FUNCTION in C:\111.php on line 10
能不能把得到的值再等于变量,具体怎么写
$p = preg_replace_callback('/(|)([\d.]+)/',   function($m) {return sprintf('%s%.2f', $m[1], $m[2] * ($m[1] == '' ? 0.8 : 0.6));},   $s); 

你的php版本低于5.3 不支持匿名函数,改成这样

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); echo $p;

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn