我想转换以.5结尾的任何数字,以便显示为后跟½的数字,但我不希望0.5显示为0½,所以我这样做:
$used = str_replace("0.5", "½", $used);
$used = str_replace(".5", "½", $used);
但是我现在意识到这也将20.5转换为2½而不是20½。
我确信有更好的方法,但我不知道如何。
示例:
5 returns "5"
5.5 returns "5½"
0.5 returns "½"
10.5 returns "10½"
我不相信这是现有问题的重复,因为该代码是替换或返回“1/2”而不是“½”
答案 0 :(得分:0)
根据上面的示例并且缺少任何进一步的要求,您可以写:
<?php
$n = "13.5";
/* ... */
$r = $n;
$r = preg_replace ('/^0\.5$/', '½', $r);
$r = preg_replace ('/\.5$/', '½', $r);
echo "$r\n";
您可以将上述内容合并为一个替代品:
$r = preg_replace ('/(^0|)\.5$/', '½', $n);
答案 1 :(得分:-2)
PHP code demo(在HTML中可以正常使用)
<?php
$number="10.5000";
if(preg_match("/^[1-9][0-9]*\.5[0]{0,}$/", $number))
{
echo $used = preg_replace("/\.5[0]{0,}$/", "½", $number);
}
elseif(preg_match("/^[0]*\.5[0]{0,}$/", $number))
{
echo $used = str_replace("$number", "½", $number);
}
else
{
echo $number;
}
<强>输出:强>
10½