在PHP中将粗俗部分转换为数字

时间:2016-05-24 13:42:41

标签: php

如何将粗俗的部分变成PHP可以用来计算其值的东西。

例如¾

$l = '¾';

echo utf8_encode($l) . ' :: ' .ord($l) . ' :: ' . bin2hex($l) . ' :: ' . chr($l);

将输出如下内容:

¾ :: 194 :: c2be ::

我们怎样才能把它变成3/4。从字符串中提取分数时,结果会有所不同:

    $l = '¾ asd';
    $r = utf8_encode($l[0]) . ' :: ' .ord($l[0]) . ' :: ' . bin2hex($l[0]) . ' :: ' . chr($l[0]);
    echo $r;
    echo ' ' ;
    $l = '½ asd';
    $r = utf8_encode($l[0]) . ' :: ' .ord($l[0]) . ' :: ' . bin2hex($l[0]) . ' :: ' . chr($l[0]);
    echo $r;

输出:

 :: 194 :: c2 ::  :: 194 :: c2 ::

1 个答案:

答案 0 :(得分:7)

您可以使用iconv()将符号音译为可以轻松解析的表单:

function utf8FractionToFloat($symbol)
{
    $translit = trim(iconv('UTF-8', 'ASCII//TRANSLIT', $symbol));

    if ($translit && preg_match('~^(\d+)/(\d+)$~', $translit, $match)) {
        return $match[1] / $match[2];
    }
}

var_dump(utf8FractionToFloat('½')); // float(0.5)
var_dump(utf8FractionToFloat('¾')); // float(0.75)