2
A
回答
1
你可以使用正則表達式,如果你知道你的字符串與preg_match
3
格式,您可以使用類似:
<?php
$str = "e.g. 25";
$val = (int)$str;
?>
但它不是最好的解決辦法。
A 「更強」 和普遍替代方案是...
代碼:(修訂版)
<?php
$str = "e.g. 25.32";
preg_match("/([0-9]+[\.,]?)+/",$str,$matches);
$val = $matches[0];
echo $val;
?>
輸出:
25.32
作爲一個功能:(修訂版)
<?php
function getInt($str)
{
preg_match("/([0-9]+[\.,]?)+/",$str,$matches);
return $matches[0];
}
?>
用法:
<?php
$val = getInt("e.g. 25.32");
?>
+1
不返回浮點數,只有整數。 – 2012-04-14 19:00:13
+0
@ dev-null-dweller剛更新了它。它正在工作;-) – 2012-04-14 19:04:01
1
我的老功能,也可用於負數:
function getNumber($str){
return floatval(preg_replace('/^[^\d-]+/','',$str));
}
2
如果號碼很簡單:
([0-9]+(?:\.[0-9]+)?)
然後你要在字符串的結尾匹配這樣的:
$string = 'e.g. 25.32';
$number = preg_replace('~^.*?([0-9]+(?:\.[0-9]+)?)$~', '$1', $string);
這將使$number
包含"25.32"
,轉換它,如果你需要的浮點值浮動:
$float = (float) $number;
如果實際上有一個數字,則此代碼僅適用。如果你不能確定它是測試第一:
$string = 'e.g. 25.32';
$number = NULL;
$hasNumber = preg_match('~([0-9]+(?:\.[0-9]+)?)$~', $string, $matches);
if ($hasNumber)
{
list(, $number) = $matches;
}
如果該號碼可以是數字,如PHP:
([+-]?INF|[+-]?(([0-9]+|([0-9]*[\.][0-9]+)|([0-9]+[\.][0-9]*))|([0-9]+|(([0-9]*[\.][0-9]+)|([0-9]+[\.][0-9]*)))[eE][+-]?[0-9]+))
那麼照顧你的實際需要相匹配。
相關問題
- 1. 將混合分數字符串轉換爲浮點數PHP
- 2. 轉混合列表轉換爲字符串,只保留字符串
- 3. 如何字符串轉換成數組
- 4. PHP - 在混合字符串中將ASCII轉換爲Unicode
- 5. PHP拼合多維數組轉換成字符串
- 6. SQL合併列轉換成字符串
- 7. 使用大小寫字符混合來轉換字符串java
- 8. 字符串如何轉換成數組在PHP
- 9. 如何PHP字符串轉換成反斜槓以JSON數組
- 10. 如何對象數組轉換成字符串,PHP
- 11. 轉換的混合串用PHP
- 12. 將字符串的混合列表轉換爲整數列表
- 13. 把excel列轉換成php字符串
- 14. PHP將字符串轉換成timestamp
- 15. PDO不能轉換成字符串PHP
- 16. 如何使用Perl轉換混合字符串中的八進制字符值?
- 17. 如何字符串轉換成
- 18. 如何字符串轉換成JSON
- 19. 如何將字符串成char []轉換
- 20. 我如何轉換成字符串?
- 21. 給定字符串的混合,生成一個只有唯一的數組。
- 22. 如何將PHP與CodeIgniter函數中的字符串混合?
- 23. 轉換混合串翻番
- 24. 如何多字符串合併成一個字符串在PHP
- 25. 字符串數組轉換成整數
- 26. 如何削減字符串轉換成字符串對在python
- 27. 我如何將字符串與數字轉換成數組在php中?
- 28. 字符串轉換成Java
- 29. 轉換數字數組轉換成字符串單元陣列
- 30. 轉換日期字符串轉換成合適的格式
如果您的字符串包含多個數字,該怎麼辦?例如'例如10.5和12.7'? – poncha 2012-04-14 18:42:18
我很確定這已經被問過。請使用右側的搜索和相關列。 – hakre 2012-04-14 18:49:57