$ _POST数字和字符检查器

时间:2016-11-02 04:44:27

标签: php post preg-match isnumeric

这是Check $_POST['id'] is numeric then do this if not do otherwise

的重复问题

但是..

给出的答案不回答恕我直言的问题。

问题是测试一个$ _POST字符串,看它是一个数字还是包含非数字字符。不要更改代码以使用$ _GET。

最初的问题是这样的:

if (!empty($_POST['id'])) { 
echo "empty";
} else {
if (is_numeric($_POST['id'])) {
echo "numeric!";
} else {
echo "not empty but not numeric how come?";
}
}

我试过,is_numeric(),但由于$ _POST将变量作为字符串传递,即使它是一个数字,这也是无用的。

我试过,如果(!preg_match('#[^ 0-9]#',$ id)),但我不知道为什么这不起作用。

ctype_digit()我认为将$ _POST中的所有内容都视为字符串仍然存在问题,所以没有问题。

必须有一种方法,但我对如何做到这一点感到迷茫。不,我不能使用$ _GET。

更新答案! (TYPO !!!!!上帝该致!):

// test.php

// testing with $_POST['id'] from forum with id = 5 and another test where id = new

$id = $_POST['editid'] ;
echo "<br>---".$id."---<br>";

if (empty($id)) { 
echo "<br>1: empty";
} else {
if (!is_numeric($id)) {
echo "<br>2: This is the number 5";
} else {
echo "<br>3: the must be the word new";
}
}

 // test 2 ... ctype_digit


if (empty($id)) { 
echo "<br>4: empty";
} else {
if (!ctype_digit($id)) {
echo "<br>5: This is the number 5";
} else {
echo "<br>6: the must be the word new";
}
}

// test 3 ... 



if (empty($id)) { 
echo "<br>7: empty";
} else {
if (!preg_match('#[^0-9]#',$id)) {
echo "<br>8: This is the number 5";
} else {
echo "<br>9: the must be the word new";
}
}

/**

result from 5


---5---

3: the must be the word new
6: the must be the word new
8: This is the number 5

results from "new"



**/

0 个答案:

没有答案