0

テキスト ファイル (a.txt というタイトル) 内の単語を検索する PHP スクリプトを記述します。テキスト ファイルには 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);
?>
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 に答える