将.5转换为1/2

时间:2017-04-06 11:45:26

标签: php

我想转换以.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”而不是“½”

2 个答案:

答案 0 :(得分:0)

根据上面的示例并且缺少任何进一步的要求,您可以写:

<?php

  $n = "13.5";
  /* ... */
  $r = $n;
  $r = preg_replace ('/^0\.5$/', '&frac12;', $r);
  $r = preg_replace ('/\.5$/', '&frac12;', $r);

  echo "$r\n";

您可以将上述内容合并为一个替代品:

  $r = preg_replace ('/(^0|)\.5$/', '&frac12;', $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,}$/", "&frac12;", $number);
}
elseif(preg_match("/^[0]*\.5[0]{0,}$/", $number))
{
    echo $used = str_replace("$number", "&frac12;", $number);
}
else
{
    echo $number;
}

<强>输出: 10½