2010-03-24 22 views
-2

转换这样:$ 300 本:300简单的PHP整数转换

  • 不能INTVAL做()或(INT) 类型转换
  • 如果非数字字符是 后缀( 300 $),这两部作品和 收益300
  • 如果前缀则返回0
  • 非数字字符可以比“$”(即“askldjflksdjflsd”)
  • 其他任何

请帮

编辑:列表项都没有要求,他们的活动和观察名单我已经作出。对不起:(

+0

这是不是一个要求的交易包括最后的子弹? – Matchu 2010-03-24 03:10:04

+0

我明白了。所以子弹实际上是关于试图用'intval()'和'(int)'而不是要求做的观察?对不起,但你提问的时候要清楚一点。 -1 – Dathan 2010-03-24 03:14:49

+0

没有问题。无论如何是我的错:( – yretuta 2010-03-24 03:19:01

回答

2
$number = filter_var($number, FILTER_SANITIZE_NUMBER_INT); 
+0

我得到“警告:在PHP 5.2.10 – Matchu 2010-03-24 03:01:58

+0

中,filter_input()期望参数1为long,在第1行的php shell代码中给出的字符串“你是否指'filter_var()'? – 2010-03-24 03:02:54

+0

是的,参数1应该是一个常量。是变量http://php.net/manual/en/function.filter-input.php – Dathan 2010-03-24 03:03:28

5
preg_match('/\d+/', $num, $matches); 
echo $matches[0]; 
+0

请记住确保然而,你实际上可以得到一个匹配,你也可以尝试将表达式包装在一个组中,这样你可以得到字符串中包含的所有数字组,这可能是有用的(特别是如果你需要更紧密的匹配,例如nu mber必须以特定子字符串为前缀。你也可能需要用''/ \ d +(\。\ d +)?/“'替换正则表达式,如果你还需要计算小数(或者是”/(\d+|\d*\.\d+) /“''如果你想得到小数点后面加上''.50”'(= 0.5)这样的符号, – 2010-03-24 15:51:13

1
$number = (integer) str_replace('$', '', $number); 
+0

不符合OP的所有要求 – Matchu 2010-03-24 03:02:43

+0

也就是说他没有使用'(int)'。使用'(整数)' – 2010-03-24 03:03:25

+0

“例如,非数字字符可以是除”$“(即”askldjflksdjflsd“)”之外的任何字符。我想当他说不使用'(int)'时,这是因为使用'(int)'不能完成任务 – Matchu 2010-03-24 03:04:41

3

您可以通过执行摆脱输入所有非数字:

$input = preg_replace('/\D/','',$input); 
2
print (int) trim('$300', '$'); 

无需正则表达式