如何在php中将字符串变量转换为整数?

时间:2013-10-01 12:02:23

标签: php

我是php的新手。我想将字符串转换为整数值。

我使用以下代码进行转换

$val='(100*2)';
echo (int)($val); //This will showing output as 0

但是echo (int)((100*2)); /This will showing output as 200

请帮助我解决这个问题。谢谢提前

6 个答案:

答案 0 :(得分:3)

(int)($val)的计算结果为0,因为$val的值不是数字字符串(即可以直接转换为数字的字符串)。

如果您确实需要此类功能,请尝试eval()

$val='(100*2)';
echo (int)($val); //This will showing output as 0
eval('$newval='.$val.';');
echo $newval;

但要注意:eval()可能很危险!

来自http://php.net/manual/en/function.eval.php

  

注意

     
    

eval()语言结构非常危险,因为它允许     执行任意PHP代码。因此不鼓励使用它。如果你     仔细确认除了使用它之外别无选择     构建时,要特别注意不要传递任何用户提供的数据     没有事先正确验证它就进入它。

  

编辑:在eval参数中添加了.';',使其成为合法的php指令。

答案 1 :(得分:1)

最常见的建议是 - 将您的字符串评估为PHP代码,例如:

$val = '(100*2)';
eval('$val = '.$val.';');

- 但这不安全,应尽可能避免使用eval

或者,PHP有bcParser,可以解决这些问题。这比eval更安全。

最后,我怀疑你真的需要做这些事情 - 似乎你用错误的方法解决了一些问题(见XY-problem描述)

答案 2 :(得分:0)

我不推荐这个,但您可以使用eval来满足您的需求

eval('$val = (100*2)');
echo intval($val); 

答案 3 :(得分:0)

为什么不呢:

$x=intval(100);// <- or an other value from the cleaned user input
$y=intval(2);
$val=$x*$y;
echo $val;

答案 4 :(得分:0)

你没有给出目标。

我可以解释为什么你的代码就像它一样工作。

'(100 * 2)'是一个无法转换为int的String,因为它包含其他字符而不是数字。每个无法转换的字符串都将导致0。

echo(int)(100 * 2)将起作用,因为你使用数字而没有字符串。无需转换,无需转换,只需回声(100 * 2);

记住PHP使用宽松的打字。您几乎不需要转换类型。此方案已设置完毕。

答案 5 :(得分:0)

你可以使用php eval函数来完成它。 首先,你必须检查特殊字符和方程字符。

$val='(100*2)';
echo matheval($val);

function matheval($equation)
{
   $equation = preg_replace("/[^0-9+\-.*\/()%]/","",$equation);
   // fix percentage calcul when percentage value < 10
   $equation = preg_replace("/([+-])([0-9]{1})(%)/","*(1\$1.0\$2)",$equation);
   // calc percentage
   $equation = preg_replace("/([+-])([0-9]+)(%)/","*(1\$1.\$2)",$equation);
   // you could use str_replace on this next line
   // if you really, really want to fine-tune this equation
   $equation = preg_replace("/([0-9]+)(%)/",".\$1",$equation);
   if ( $equation == "" )
   {
        $return = 0;
   }
   else
   {
        eval("\$return=" . $equation . ";" );
   }
   return $return;
}