使用PHP验证文本文件中的单词

时间:2013-11-23 21:55:28

标签: javascript php validation validating

在尝试任何复杂的实时之前,我正在练习一些PHP编码。我的目标是验证在HTML / JavaScript表单上输入的单词。我想使用PHP打开并解析文本文件,看看表单上输入的单词是否与此文本文件中的单词匹配。到目前为止,我得到的唯一回报表明这个词不在列表中,所以我不确定代码是在比较这两个字符串。 我的HTML / JS代码是:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01  Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Using this html document</title>
<script language="JavaScript">
 function trim(s) {
 while (s.charAt(0) == ' ')
    s = s.substring(1);
 while (s.charAt(s.length - 1)== ' ')
    s = s.substring(0, s.length - 2);
  return s;
 }
 function check(lname)
 {
 var x = document.getElementById(lname);
  var s = new String(x.value);
  s = trim(s);
  if(s == "")
  {
    alert("Please enter a word");
    javascript:history.go(0);
  }
  else
    x.value = s;
  }
  </script>
</head>
<body>
<form action="http://localhost/Exercise13.php" method="post">
<label for="fname">Name: </label>
<input type="text" name="lname" id="lname" size="20"><br><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
<input type="submit" name="submit" id="submit" value="     Submit       "onclick = "check       ('lname');">
</form>
</body>
</html>

我的PHP代码是这样的:

<?php
$fh = fopen("a.txt","r")or die("Can't open file");
$s = $_POST["lname"];
while(!feof($fh))
{
$line = fgets($fh);
$a = trim($line);
}
if (strcmp($s,$a) == 0)
print ("<h1>" . $s . " is in the list</h1><br>");
fclose($fh);
print ("<h1>" . $s . " is not in the list</h1><br>");
?>

我的.txt文件只是一个随机单词列表,列表中有一些我试图通过修剪删除的字符。我已经使用PHP检查器检查了我的PHP的任何语法错误,一切看起来都不错。它只是没有像我想要的那样运作。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您的逻辑已损坏,因为您只检查文件中最后一个字符串的结果。您需要将检查移动到实际循环中,以便比较每行的值,而不仅仅是循环结束后$ a的值。

$found = false;

while (!feof($fh))
{
    $line = trim(fgets($fh));

    if ($line == $s)
    {
        $found = true;
        break;
    }

}

..然后在循环搜索完文件后检查$ found的值。一旦找到匹配,这也将结束循环。

我还想指出这是(非常)低效的,但作为一项学习练习,这一切都很好。