编写PHP以使用循环在文本文件中查找单词

编写PHP以使用循环在文本文件中查找单词,php,Php,编写PHP脚本在文本文件(标题为a.txt)中搜索单词。文本文件包含50个单词,每个单词在一行上。在JavaScript端,客户端在文本字段中键入一个随机单词并提交该单词。PHP脚本使用循环搜索50个单词,直到在a.txt文件中找到该单词为止。如果找不到该单词,则必须显示一条错误消息,说明该单词不在列表中 JavaScript部分是正确的,但我在使用PHP时遇到了问题: $file = fopen("a.txt","r") or die("File does not exist in the c

编写PHP脚本在文本文件(标题为a.txt)中搜索单词。文本文件包含50个单词,每个单词在一行上。在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);
?>
$file=fopen(“a.txt”、“r”)或die(“当前文件夹中不存在文件”);
$s=$_POST[“lname”];
$x=文件获取内容(“a.txt”);
$a=修剪($x);
如果(strcmp($s,$a)==0)
打印(“$\u POST[“lname”]”在列表中);
其他的
打印(“$\u POST[“lname”]”不在列表中);
fclose($文件);
?>

如果它只有50个单词,那么就用它做一个数组,然后检查它是否在数组中

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

if(in_array($_POST["lname"], $split))
{
    echo "It's here!";
}

如果只有50个单词,那么就用它做一个数组,然后检查它是否在数组中

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

if(in_array($_POST["lname"], $split))
{
    echo "It's here!";
}
您没有在代码中搜索“单词”,但下面的代码可能会对您有所帮助

$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
您没有在代码中搜索“单词”,但下面的代码可能会对您有所帮助

$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

下面是一些奇特的正则表达式:)

如果不希望搜索不区分大小写,请从
'$/im'
中删除
i
其中的
m
告诉解析器将
^$
与行结束符匹配,这样就可以了


下面是一个工作示例:

这里有一个奇特的正则表达式:)

如果不希望搜索不区分大小写,请从
'$/im'
中删除
i
其中的
m
告诉解析器将
^$
与行结束符匹配,这样就可以了


下面是一个工作示例:

如果您只需要快速检查是否存在,实际上不需要将文件拆分为数组

$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";
}

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

如果只需要快速检查是否存在,实际上不需要将文件拆分为数组

$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";
}

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

您的描述和代码不匹配。我不理解您在代码中提出的问题。。你在哪里搜索这个词??例如,您必须读取文件,进行分解(“\n”,$string),然后使用循环在循环生成的数组中查找单词。以何种方式不起作用?您是否收到错误消息?您的描述和代码不匹配。我不理解代码中的问题。。你在哪里搜索这个词??例如,您必须读取文件,进行分解(“\n”,$string),然后使用循环在循环生成的数组中查找单词。以何种方式不起作用?您是否收到错误消息?您正在做什么或为什么要做什么的任何解释?这是执行作业的函数体。添加了签名。对您正在做什么或为什么要做的任何解释?这是执行此任务的函数体。添加了签名。那会有用的…但是我真的需要使用循环来遍历文本文件中包含的50个单词。每个单词都在一行上。你知道怎么做吗?那会有用的…但我真的需要使用循环来遍历文本文件中包含的50个单词。每个单词都在一行上。你知道怎么做吗?