如果数字具有的位数> 1,则进一步搜索。 1

时间:2016-09-27 19:04:02

标签: php

我正在学习PHP并开始了一个涉及一些文件处理的小项目,一个关于数字的数据库检查器(为了保持简单)。我的意思是,当你输入一个数字并点击提交按钮时,php将搜索文本文件以获取该数字的名称。

文本文件如下:
1桑德拉
2 Piet
3弗朗西斯
等...

代码:

<?php
    // Type your code here
    $val = $row = NULL;


    if (isset($_POST["submit"])) {
        $myFile = fopen("testData.txt","r");
        $number = $_POST["input"];
        $cntNumber = strlen($number);



        while (!feof($myFile)){
            $val = fgetc($myFile);

            if (is_numeric($val)) {
                if ($cntNumber > 1) {
                    // Point where I Don't know what to do
                } elseif ($val == $number) {
                    $row = fgets($myFile);
                }

            }
        }
    }

    ?>

    <div style="width: 232px; height: 100px; border: 1px solid gray; margin-bottom: 5px;">
        <?php
            echo $row . "<br>";    
        ?>
    </div>
    <form action="index.php" method="post">
        <input name="input" placeholder="Number" type="text">
        <input name="submit" value="Search" type="submit">
    </form>

因此,如果数字有多个数字,则必须搜索下一个匹配数字,但我不知道如何实现这一目标。我希望我的解释很清楚,如果不是不介意问一些问题。

提前致谢

1 个答案:

答案 0 :(得分:2)

我不知道您是否要使用f - 文件功能,但更简单的解决方案是:

if (isset($_POST["submit"])) {
    $myFile = file("testData.txt");
    // print_r $myFile and see that this is array of lines

    $number = $_POST["input"];
    // iterate over your lines:
    foreach ($myFile as $line) {
        // as each line contains two values divided by a space, 
        // you can explode the line into two parts
        $parts = explode(' ', $line);
        // print_r($parts) to see result

        // next check first part which is number:
        if ($parts[0] == $number) {
            echo 'Found!';
            break;    // exit loop as your value is found
        }
    }
}

如果你想使用f - 文件功能,那么代码可以是:

$fh = fopen("testData.txt", "r");
while(!feof($fh)) {
    $str = fgets($fh, 1024);
    $parts = explode(' ', $str);
    // print_r($parts) to see result
    if ($parts[0] == $number) {
        echo 'Found!' . $str;
        break;    // exit loop as your value is found
    }
}

但我强烈建议您将数据库用作存储空间。