在表单验证中以2位开头的数字

时间:2014-04-05 23:49:19

标签: php regex validation

我尝试使用减法来“拾取”2位数字,但它不起作用,'boleta'必须以'20'开头,否则显示消息“Introduce solo los 10 digitos de tu Boleta!”。< / p>

谢谢!

<?php
// define variables and set to empty values
$nombreErr = $boletaErr = "";
$nombre = $boleta =  "";

if ($_SERVER["REQUEST_METHOD"] == "POST"){
if (empty($_POST["boleta"])){
$boletaErr = "Boleta is required";
}
else{
$boleta = test_input($_POST["boleta"]);
$boletavalida=substr($boleta,0,2); 
//check if boleta only contains numbers
if (!preg_match('/^[0-9]{10}+$/', $boleta) && !$boletavalida ==20){
$boletaErr="Introduce solo los 10 digitos de tu Boleta!";
}   
}
}

function test_input($data){
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>

2 个答案:

答案 0 :(得分:1)

以下行不正确:

if (!preg_match('/^[0-9]{10}+$/', $boleta) && !$boletavalida == 20) {

你正在否定$boletavalida的价值,相反,你的意思是&#34;不等于&#34;应该使用!=运算符。

尝试以下方法:

if (!preg_match('/^[0-9]{10}+$/', $boleta) && $boletavalida != '20') {

答案 1 :(得分:0)

改变这个:

if (!preg_match('/^[0-9]{10}+$/', $boleta) && !$boletavalida ==20){

对此:

if ((!preg_match('/^[0-9]{10}+$/', $boleta) && (strpos($boletavalida, '20') != 0)){