2010-03-24 52 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', '$'); 

無需正則表達式