我知道这听起来可能是一个非常简单的问题,但我正在努力确保提供的字符串是数字/十进制格式,以便稍后使用PHP的number_format()函数。
我该怎么做 - 比如有人在文本字段中键入15:00 - 我应该使用正则表达式和php函数从中删除冒号并使其仅返回有效字符。
preg_match()返回数组 - 所以我不能将结果传递给number_format(),除非我将它内爆(或类似的东西)。
非常感谢您的帮助。
答案 0 :(得分:112)
使用is_numeric或intval可能是验证号码的最佳方式,但要回答您的问题,您可以尝试使用preg_replace。此示例删除所有非数字字符:
$output = preg_replace( '/[^0-9]/', '', $string );
答案 1 :(得分:39)
删除任何不是数字的内容:
$output = preg_replace('/[^0-9]/', '', $input);
说明:
[0-9]
匹配0到9之间的任何数字。^
否定了[]
模式。[^0-9]
匹配任何不是数字的内容,因为我们使用的是preg_replace
,所以它们将被''
取代(preg_replace
的第二个参数)。答案 2 :(得分:6)
你可以试试那个:
$string = preg_replace('/[^0-9]/', '', $string);
干杯。
答案 3 :(得分:3)
使用内置的php函数is_numeric
来检查值是否为数值。
答案 4 :(得分:3)
这是正确的答案
preg_match("/^[0-9]+$/", $yourstr);
如果匹配,此函数返回TRUE(1),否则返回FALSE(0)
快速说明:
'^' : 意味着它应该以以下开头(在我们的例子中是一个数字范围 [0-9] ) (为了避免像 ("abdjdf125") 这样的情况)
'+' : 表示应该至少有一位
'$' : 意味着在我们的模式之后字符串应该结束 (为了避免像 ("125abdjdf") 这样的情况)
答案 5 :(得分:1)
仅获取正则表达式字符串中数字的另一种方法如下所示:
$output = preg_replace("/\D+/", "", $input);
答案 6 :(得分:0)
如果你只想要整数,你可以这样做。
function make_whole($v){
$v = floor($v);
if(is_numeric($v)){
echo (int)$v;
// if you want only positive whole numbers
//echo (int)$v = abs($v);
}
}
答案 7 :(得分:0)
preg_replace("/\D/", '', $value);