我验证我的文本框只包含数字,也可以为空或空白。但是当我将其留空或输入任何数字时,它始终显示错误消息“传递年份仅包含数字。”。我的代码是
<?php
include "config.php";
function is_valid_fname($postg_year)
{
if ( !preg_match ("/^[0-9\s]+$/",$postg_year)) {
?>
<center><strong><font color="red">Passing Year Only Contain Numbers.</font></strong></center>
<?php
return false;
}
}
if (isset($_POST['submit'])) {
$postg_year=$_POST['postg_year'];
if(is_valid_fname($postg_year))
{
//my code
}
<form method="post">
<input type="text" name="postg_year" class="small_text" width="60">
<input type="submit" name="submit" value="submit">
</form>
}
答案 0 :(得分:2)
如果我理解正确的话...... 改变这个:
if ( !preg_match ("/^[0-9\s]+$/",$postg_year)) {
进入这个:
if ( !preg_match ("/^[0-9\s]*$/",$postg_year)) {
区别在于&#34; +&#34;需要至少一个字符,而&#34; *&#34;甚至接受0个字符。
答案 1 :(得分:1)
你的表单应该有一个带有name属性的提交按钮,你在php中检查它是否已设置但是在表单中你没有给它任何名字,所以is_valid_fname()
永远不会在php中调用,使用以下代码:
<input type="submit" name = "submit" value="submit">
答案 2 :(得分:0)
尝试使用
(is_numeric($postg_year)
或强>
strlen($postg_year) == 0)
答案 3 :(得分:0)
尝试
function is_valid_fname($postg_year)
{
if ( !preg_match ("/^[0-9\s]*$/",$postg_year))
{
return '<center><strong><font color="red">Passing Year Only Contain Numbers.</font></strong></center>';
}
else
return false;
}
答案 4 :(得分:0)
不同之处在于“+”需要至少一个字符,而“star()”甚至接受0个字符。因此您必须替换“+”而不是“star()”。等,
if ( !preg_match ("/^[0-9\s]*$/",$postg_year)) {