我有一个表示温度的字符串。此字符串是从网站动态解析的,它也可以包含负值。例如,它可以是-1 C或2 C等等。
我想只得到整数值。这是我的代码:
$temp_number = preg_replace("/-?[0-9]+/", '', $value);
echo "Temperature : ". $value . "Number : ".$temp_number."<br/>";
我认为temp_number应该是提取的数字,例如它是C。这是我的输出。
Temperature : 0℃ Number : ℃
我应该使用什么?我不想替换字符串,我想提取它。
答案 0 :(得分:3)
请改为尝试:
$temp_number = preg_replace("/[^-0-9]+/", '', $value);
echo "Temperature : ". $value . "Number : ".$temp_number."<br/>";
[^-0-9]+
的正则表达式基本上表明它应该删除任何非-
或数字的内容。
答案 1 :(得分:1)
intval
似乎是一个明显的解决方案,比正则表达式简单得多。 (您的示例使得它看起来好像字符串始终只是一个数字后跟C,并且温度通常不会以小数形式记录,因此:intval
。)
答案 2 :(得分:0)
你能试试这个,在你的正则表达式中使用/[^0-9]/
$number = preg_replace("/[^0-9]/", '', $value);
echo "Temperature : ". $value . "Number : ".$number ."<br/>";
答案 3 :(得分:0)
尝试使用"/[^0-9]/"
作为正则表达式
$value="100";
$temp_number = (int)preg_replace("/[^0-9]/", '', $value);
echo "Temperature : ". $value . "Number : ".$temp_number."<br/>";
输出:
Temperature : 100Number : 100
答案 4 :(得分:0)
1.Like Jessica上面说intval
更简单
$value = '0℃';
$number = intval($value);
echo $number; // which is 0 integer
2.此外,您可以使用filter_var
$value = '0℃';
$number = filter_var($value,FILTER_SANITIZE_NUMBER_INT);