编写PHP脚本以搜索文本文件中的单词(标题为a.txt)。文本文件包含50个单词,每个单词在1行。在JavaScript方面,客户端在文本字段中键入随机单词并提交单词。 PHP脚本使用循环搜索50个单词以查找正确的单词,该循环一直运行直到在.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);
?>
答案 0 :(得分:3)
如果它只有50个单词,那么只需从中制作一个数组并检查它是否在数组中。
$file = file_get_contents('a.txt');
$split = explode("\n", $file);
if(in_array($_POST["lname"], $split))
{
echo "It's here!";
}
答案 1 :(得分:0)
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;
}
答案 2 :(得分: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
答案 3 :(得分: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
}
如果您不希望搜索不区分大小写,请从i
移除'$/im'
那里的m
告诉解析器将^$
与行结尾匹配,这样就行了。
这是一个工作示例:http://ideone.com/LmgksA
答案 4 :(得分: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";
}
匹配字符串中的任何单词标记。