我试图在php中检测输入中是否有任何负数。
我知道输入只是一个数字,而不是很容易检查,但是当有数字的字符串时,如何检查。
example --- "This is a negative number -99"
那么现在怎么可能检查该行中是否有负数。
我这样想,但没有成功---
$post_data = "This is -12";
if (preg_match('/^\d+$/D', $post_data) && ($post_data < 0)) {
echo "negetive integer!";
} else {
echo 'not working';
}
预期结果 -
Detect if there is any -number like -1, -5, -15 .....
任何人都知道如何解决这个问题!!!
答案 0 :(得分:5)
试试这个:
if (preg_match('/\-[\d]+/', $post_data)){
echo "negetive integer!";
} else {
echo 'not working';
}
首先,你正在使用^,这意味着数字应该在字符串的开头,而不是这里的情况。所以我们先删除它。然后我们删除$符号,因为负数可以出现在字符串中的任何位置,而不仅仅是在结尾处。接下来我们使用连字符( - )告诉正则表达式该数字应该有一个减号作为前缀,将其标记为负数。
答案 1 :(得分:0)
试试这个:
<?php
$string="9, -1, -5, 11, 19, 22, -8";
$data=explode(",",$string);
$neg_values=array();
foreach($data as $value):
$value = preg_replace('/\s+/', '', $value); // to remove space
if($value < 0):
$neg_values[]=$value;
endif;
endforeach;
?>
现在打印$neg_values
,您将获得所需的输出。 :)