首页 > 解决方案 > 使用 php 从文本文件中获取数据

问题描述

我有一个文本文件,它是用另一个 php 脚本创建的,其中包含以下信息:姓名、电话和地址。以这样的格式:命名电话地址,我想用另一个 php 脚本搜索给定名称的文本文件。如果名称存在,则将结果放在搜索框下,否则将显示错误消息。到目前为止,这是我的代码:

<!DOCTYPE HTML>
<html>
    <head>
        <title>Phonebook Search</title>
    </head>
    <body>
        <form action="" method="post">//my search box.
            <div><h1>Phonebook Search</h1>
                <label>Enter name: <input type="text" name="name" /></label>
                <input type="submit" value="Search" />
            </div>
        </form>

        <?php
            if ($_SERVER["REQUEST_METHOD"] == "POST")//the condition after pressing the search button.
            {
                $name = $_POST["name"];
                $filename = 'phonebook.txt';
                $file = file_get_contents($filename);
                if (strpos($file, "$name"))
                {
                    echo "$name";
                }

                $lines = file("phonebook.txt", FILE_IGNORE_NEW_LINES);

            }
        ?>
    </body>
</html>

任何帮助都会得到帮助。如果您需要更多信息,我会提供。

标签: phphtmlsearchtext-files

解决方案


除了清理代码的一些小部分(替换"$name"$name)之外,您还必须检查strpos(...) !== false,因为 的位置0将被评估为FALSE。看看php.net/manual/en/function.strpos.php)。!==将考虑类型,而不仅仅是两个变量的值。

<!DOCTYPE HTML>
<html>
    <head>
        <title>Phonebook Search</title>
    </head>
    <body>
        <form action="" method="post">//my search box.
            <div><h1>Phonebook Search</h1>
                <label>Enter name: <input type="text" name="name" /></label>
                <input type="submit" value="Search" />
            </div>
        </form>

        <?php
            if ($_SERVER["REQUEST_METHOD"] == "POST")
            {
                $name = $_POST["name"];
                $filename = 'phonebook.txt';
                $file = file_get_contents($filename);

                // transform $name to e.g. lowercase (ignores case entered by user)

                if (strpos($file, $name) !== false)
                {
                    echo $name;
                }

                // what is this needed for?
                $lines = file($filename, FILE_IGNORE_NEW_LINES);

            }
        ?>
    </body>
</html>

我同意@PeterSH 的评论:使用JSON具有预定义结构的另一种格式,您可以在其中搜索或使用数据库。


推荐阅读