PHP:将url变量编号转换为数字

时间:2010-11-06 16:11:56

标签: php character-encoding numbers

我正在尝试send a number从一个页面到另一个页面,以便将其保存在我的数据库中,但当我使用number_format方法时,该数字将转换为0:< / p>

<?php
    $_REQUEST["myNumber"]; // the number from the url is 25%2C8 (25,8)
    // why this returns 0? 
    number_format (urlencode($_REQUEST["myNumber"]), 2, ".", "");
?>

我认为urlencode函数可以将网址号转换为字符串数,这是我的错?

2 个答案:

答案 0 :(得分:2)

如果要解码字符,则需要使用urldecode函数而不是urlencode。并将','作为十进制指针传递。

所以你的代码应该是这样的:

number_format (urldecode($_REQUEST["myNumber"]), 2, ",", "");

但您需要考虑$ _POST \ GET \ REQUEST数组中的变量已经解码。也许,您的代码可能更简单:

number_format ($_REQUEST["myNumber"], 2, ",");

答案 1 :(得分:0)

number_format期望一个数字(浮点数,确切地说)作为第一个参数,而'25,8'不会被识别为float。你需要做类似的事情:

str_replace(',','.', $_REQUEST["myNumber"]); // '25,8' --> '25.8'

单个逗号转换为可以计算为十进制数的字符串(可以存储在db中)。

运行:

print number_format('25,8', 2);

返回25.00,而25.80不是{{1}}(我认为这是您想要的结果)。