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

Using PHP to validate a word in a text file

本文关键字:单词 文件 文本 PHP 验证 使用      更新时间:2023-09-26

在尝试任何复杂的实时操作之前,我正在练习一些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是否有任何语法错误,一切看起来都很好。它只是没有像我希望的那样工作。有什么想法吗?

您的逻辑被破坏了,因为您只检查文件中最后一个字符串的结果。您希望将检查移动到实际的循环中,这样您就可以比较每一行的值,而不仅仅是循环结束后$a的值。

$found = false;
while (!feof($fh))
{
    $line = trim(fgets($fh));
    if ($line == $s)
    {
        $found = true;
        break;
    }
}

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

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