2013-01-19 37 views
-1
I need to validate a Date from an input box. 

正则表达式很好,但就是这样。 首先,在范围内它会去,第二你可以帮助做这项工作? 当它验证我不希望它回声任何事情,当它不,我想它 告诉用户,他们必须以mm/dd/yyyy格式输入它。如果你可以在一个更好的警报框中做到这一点!谢谢各位开发人员! COMPLETE代码在标签后面。你会看到我的preg_match被注释掉了。谢谢各位开发人员!preg_match来自输入框的帮助

$input = '<input value="Date" type="text" name="date">'; 

if (preg_match('/^(|(0[1-9])|(1[0-2]))\/((0… $input)) { 
echo ""; 
} else { 
echo "You must Re-enter date in mm/dd/yyyy format."; 
} 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<embed src="Songs/nature.mp3" width=10 height=10 autostart=true repeat=true loop=true></embed> 
    <title>Post Song</title> 
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> 
</head> 
<body> 
    <h1>Post New Song</h1> 
    <hr /> 
    <br /> 
    <body background="Songs/back.jpg"> 

    <form action= "Postsong.php" method="POST"> 
    <span style="font-weight:bold">Song:</span> 
     <input value="" type="text" name="song" /> 
    <span style="font-weight:bold">Artist Name:</span> 
     <input value="" type="text" name="name" /> 
    <span style="font-weight:bold">Date:</span> 
     <input value="" type="text" name="date" /><br /> 
     <br /> 
     <br /> 

    <input type="submit" name="submit" 
     value="Post Song" /> 
    </form> 
    <hr /> 
    <p> 
    <a href="working.php">View Songs</a> 
    </p> 



    <?php 

/* 
    $input = '<input value="Date" type="text" name="date">'; 

    if (preg_match('/^(|(0[1-9])|(1[0-2]))\/((0[1-9])|(1\d)|(2\d)|(3[0-1]))\/((\d{4}))$/', $input)) { 
    echo ""; 
} else { 
    echo "You must Re-enter date in mm/dd/yyyy format."; 
} 

*/ 

    if (isset($_POST['submit'])) { 
     $Song = stripslashes($_POST['song']); 
     $Name = stripslashes($_POST['name']); 
     $Date = stripslashes($_POST['date']); 
     $Song= str_replace("~", "-", $Song); 
     $Name = str_replace("~", "-", $Name); 
     $Date = str_replace("~", "-", $Date); 
     $ExistingSubjects = array(); 
     if (file_exists(
      "Songs/songs.txt") && 
      filesize("Songs/songs.txt") 
      > 0) { 
      $SongArray = file(
       "Songs/songs.txt"); 
      $count = count($SongArray); 
      for ($i = 0; $i < $count; ++$i) { 
       $CurrSong = explode("~", 
        $SongArray[$i]); 
       $ExistingSubjects[] = $CurrSong[0]; 
      } 
     } 
     if (in_array($Song, $ExistingSubjects)) { 
      echo "<p>The song you entered 
       already exists!<br />\n"; 
      echo "Please enter a new song and 
       try again.<br />\n";      // Do I need another if statement saying if empty echo you need to enter something?... 
      echo "Your song was not saved.</p."; 
      $Song = ""; 
     } 
     else { 
     $SongRecord = 
      "$Song~$Name~$Date~\n"; 
     $SongFile = fopen(
      "Songs/songs.txt", 
      "ab"); 
     if ($SongFile === FALSE) 
      echo "There was an error saving your 
       song!\n"; 
     else { 
      fwrite($SongFile, 
       $SongRecord); 
      fclose($SongFile); 
      echo "Your song has been 
      saved.\n"; 
      $Song = ""; 
      $Name = ""; 
      $Date = ""; 
     } 
    } 
} 
    else { 
     $Song = ""; 
     $Name = ""; 
     $Date = ""; 
    } 




    ?> 
    </body> 
+1

首先学习你明显缺乏的PHP和/或JavaScript的基础知识。格式化您的代码。此外,您还没有搜索太多的答案,因为验证涵盖在这里:http://stackoverflow.com/questions/12030810/php-date-validation – andr

+0

不要使用正则表达式来验证数值。这是一个解决的问题。人们已经编写,测试和调试过的代码。无论何时您遇到编程问题时,其他人可能不得不处理其他问题,然后查找现有代码,以便为您解决问题。 –

回答

0

为毫米/日/年

(0[1-9]|1[0-2])/(0[1-9]|1[0-9]|2[0-9]|3(0|1))/\d{4} 

以下的正则表达式的匹配的第一部分即(0[1-9]|1[0-2])检查两个数字范围从0112

下一部分即(0[1-9]|1[0-9]|2[0-9]|3(0|1))检查范围从0131的两位数字。

下一部分,即\d{4}检查4位数字。

/之间的部分检查/作为分隔符。