2017-03-07 1 views
-2

Ich arbeite an der Validierung für Telefonnummer und ext-Nummer, Was ich tun muss, ist, wenn keine Nebenstellennummer verfügbar ist, sollte ich nur eine Null setzen (0). Mein Problem ist, dass die Felder die Ziffer "0" nicht akzeptieren.Preg_match 0-9 Validierung - Akzeptieren Sie keine Null (0)

Wie kann ich es beheben?

Dies ist der Ausdruck, den ich verwendet habe.

preg_match("/^[0-9]*$/", $ext) 

Code

<?php 

$Errext=""; 
if(isset($_POST["submit"])){ 

if (empty($_POST["ext"])) { 
      $Errext = "Please enter your extension #. If you do not have an extension # then enter zero(0)."; 
     } else { 
      $ext = test_input($_POST["ext"]); 
      if (!preg_match("/^[0-9]*$/", $ext)) { 
       $Errext = "Only Numbers is allowed"; 
      } else { 
       $extSuc = 1; 
      } 
     } 
} 

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


?> 
<form method="POST" class="form-horizontal" action="" id="form1"> 
<div class="col-md-offset-1 col-md-5"> 
          <div class="form-group"> 
           <label for="ext">Ext</label> 
           <input class="form-control" name="ext" type="number" id="ext" value="<?php echo $ext; ?>"/> 
           <span> 
            <?php echo $Errext; ?> 
           </span> 
          </div> 
         </div> 

    <button name="submit" value="Submit" class="btn btn-primary col-md-offset-10 col-md-2">Submit</button> 
</form> 

Sie den Code hier

http://phpfiddle.org/

Dank laufen kann.

Ich löse nur das Problem.

if ($_POST["ext"]=='') { 

Sorry für die große Mühe und vielen Dank für die Hilfe.

+1

Was versuchen Sie hier eigentlich zu erreichen? –

+0

Zahlen von 0-9 sir –

+0

der Ausdruck, den ich nicht akzeptiere Null..just die Null –

Antwort

0

akzeptiert dies nicht eine Null:

preg_match("/^[1-9]*$/", $ext) 
+0

Sorry Herr, wenn mein Problem nicht klar ist .. der Ausdruck, den ich verwendet habe, akzeptierte meine Eingabe nicht, wenn ich gerade setze Null. –

0

, das Sie ...

var_dump(preg_match("/^[1-9]*$/", '0987777777')); // return 0; 
+0

Danke Sir, aber es funktioniert nicht –

0

Nur du, dass 0 entfernen müssen und ersetzen Sie es mit einem Minimum an Ihrer Reichweite wünschen ist. preg_match("/^[1-9]*$/", '0987777777')

1

Sie geben Ihre Regex nie ein. 0 ist empty.

if (empty($_POST["ext"])) { 

gibt false zurück, wenn var existiert und hat einen nicht leeren, Nicht-Null Wert. Andernfalls wird TRUE zurückgegeben.

Versuchen Sie if (isset($_POST["ext"])) {. Sie könnten dann auch

http://php.net/manual/en/function.ctype-digit.php oder http://php.net/manual/en/function.is-numeric.php verwenden, um zu überprüfen, ob die Zeichenfolge numerisch ist ... oder Sie könnten die Regex aktualisieren, damit eine Zahl vorhanden sein muss. Die * ermöglicht die Zeichenfolge leer zu sein, machen Sie es + und ein Wert muss vorhanden sein.

^[0-9]+$ 
+0

Ich versuchte es Sir, aber es funktioniert nicht –

+0

'var_dump ($ _ POST [" ext "])' Was ist das? Gibt auch $ Errext aus, was ist das? – chris85

+0

@misdirection ein passender Benutzername ich sehe. – chris85

Verwandte Themen