我正在学习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>
因此,如果数字有多个数字,则必须搜索下一个匹配数字,但我不知道如何实现这一目标。我希望我的解释很清楚,如果不是不介意问一些问题。
提前致谢
答案 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
}
}
但我强烈建议您将数据库用作存储空间。