在PHP中将粗俗的分数转换为数字
如何将一个粗俗的分数转换成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]) . ' :
$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谢谢,修好了。