检测输入中是否有任何负数

时间:2015-10-12 09:48:42

标签: php

我试图在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 .....

任何人都知道如何解决这个问题!!!

2 个答案:

答案 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,您将获得所需的输出。 :)