Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中将粗俗的分数转换为数字_Php - Fatal编程技术网

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

在PHP中将粗俗的分数转换为数字,php,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]) . ' :

如何将一个粗俗的分数转换成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::c2::194::c2::

您可以使用将符号音译成一种形式,然后可以轻松解析:

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)
您可以使用将符号音译为便于分析的形式:

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)

字符
¾
与数值(3/4)无关。这就像问为什么“wumpus”不等于17。
if($l=='¾'){$l=3/4;}
@arkascha感谢您指出了明显的问题字符
¾
与数值(3/4)无关。这就像在问为什么“wumpus”不等于17。
如果($l=='¾'){$l=3/4;}
@arkascha感谢您提出的显而易见的问题:我可以从字符串中提取粗俗的分数以用于此方法吗$l=‘½asd’;substr($l,0,1);或$l[0];不等于字符串的小数部分吗?
$l
->
$symbol
,但除此之外,这是一个非常好的解救方法,感谢您的帮助,一切都很好now@iainn谢谢,已修复。如何从字符串中提取粗俗分数以用于此方法$l=‘½asd’;substr($l,0,1);或$l[0];不等于字符串的小数部分吗?
$l
->
$symbol
,但除此之外,这是一个非常好的解救方法,感谢您的帮助,一切都很好now@iainn谢谢,修好了。