0

编写 PHP 脚本以在文本文件(标题为 a.txt)中搜索单词。文本文件包含 50 个单词,每个单词占 1 行。在 JavaScript 端,客户端在文本字段中键入一个随机单词并提交该单词。PHP 脚本使用循环搜索这 50 个单词以找到正确的单词,该循环一直运行直到在 a.txt文件中找到该单词。如果找不到该词,则必须出现一条错误消息,指出该词不在列表中。

JavaScript 部分是正确的,但我在使用 PHP 时遇到了问题:

$file = fopen("a.txt","r") or die("File does not exist in the current folder.");
$s = $_POST["lname"];
$x = file_get_contents("a.txt");
$a = trim($x);
if(strcmp($s, $a) == 0)
print("<h1>" . $_POST["lname"] . " is in the list</h1>");
else
print("<h1>" . $_POST["lname"] . " is not in the list</h1>");
fclose($file);
?>
4

5 回答 5

3

如果它只有 50 个单词,那么只需用它制作一个数组并检查它是否在数组中。

$file = file_get_contents('a.txt');
$split = explode("\n", $file);

if(in_array($_POST["lname"], $split))
{
    echo "It's here!";
}
于 2012-11-30T19:40:50.153 回答
1
function is_in_file($lname) {
    $fp = @fopen($filename, 'r'); 
    if ($fp) { 
        $array = explode("\n", fread($fp, filesize($filename))); 
        foreach ($array as $word) {
            if ($word == $lname)
                return True;
        }
    }
    return False;
}
于 2012-11-30T19:43:23.053 回答
0

您没有在代码中搜索“单词”,但也许下面的代码会对您有所帮助

$array = explode("\n",$string_obtained_from_the_file);
foreach ($array as $value) {
    if ($value== "WORD"){
      //code to say it has ben founded
    }
}
//code to say it hasn't been founded
于 2012-11-30T19:44:53.617 回答
0

这是一些花哨的正则表达式:)

$s = $_POST["lname"];
$x = file_get_contents("a.txt");

if(preg_match('/^' . $s . '$/im', $x) === true){
    // word found do what you want
}else{
    // word not found, error
}

如果您不希望搜索不区分大小写 ,请删除ifrom那里告诉解析器匹配行尾,所以这是有效的。'$/im'
m^$

这是一个工作示例:http: //ideone.com/LmgksA

于 2012-11-30T19:55:50.063 回答
0

如果您正在寻找的只是快速存在检查,您实际上不需要将文件分解成一个数组。

$file = fopen("a.txt","r") or die("File does not exist in the current folder.");
$s = $_POST["lname"];
$x = file_get_contents("a.txt");

if(preg_match("/\b".$s."\b/", $x)){
    echo "word exists";
} else {
    echo "word does not exists";
}

这匹配字符串中的任何单词标记。

于 2012-11-30T19:56:05.823 回答