如何写 PHP 查询 TXT 文件内容

2015-11-03 11:53:14 +08:00
 hongqigong

各位技术帝,帮忙写个 PHP 查询 TXT 里面内容的查询页面

如: TXT 内容
张三----2015 年 10 月 2 日 10 时----80----zhangsan----1234@qq.com
李四----2015 年 10 月 2 日 10 时----80----zhangsan----12345@qq.com
王五----2015 年 10 月 2 日 10 时----80----zhangsan----123456@qq.com

PHP 页面输入 123@qq.com 此邮箱就能显示张三这条信息,输入其他的则不返回信息

如何实现

4898 次点击
所在节点    PHP
43 条回复
LioMore
2015-11-03 13:24:34 +08:00
@b821025551b 有必要这样冷嘲热讽吗?
myleon
2015-11-03 13:34:52 +08:00
转成 csv 大把的类可以让你调用
SharkIng
2015-11-03 13:38:32 +08:00
file()
array()
if()
hambut
2015-11-03 14:16:32 +08:00
是时候上这个珍藏多年的黑科技了

@Scholer @solupro @infong @myleon
hambut
2015-11-03 14:16:55 +08:00
https://github.com/harelba/q

日光 at 了忘记写地址了。。。
jarlyyn
2015-11-03 14:52:13 +08:00
csv 或者正则
tabris17
2015-11-03 14:57:01 +08:00
这道题只有北大青鸟的校长才会做了,太难了
liujiantao
2015-11-03 15:05:20 +08:00
fopen 读文件,再分隔字符串
hongcha
2015-11-03 15:39:16 +08:00
<?php

echo shell_exec('grep "123@qq.com" a.txt');
moro
2015-11-03 15:46:55 +08:00
这个问题有一个点需要考虑,就是不能把所有文件全部读入进来,如果这个文件很大的话,内存会爆掉。
可以用随机读写的函数, fseek,fgets 等

<?php
$handle = @fopen("./inputfile.txt", "r");
$finder = "1234@qq.com";
if ($handle) {
while (($buffer = fgets($handle, 4096)) !== false) {
if (strpos($buffer, $finder) != false ){
echo $buffer;
}
}
if (!feof($handle)) {
echo "Error: unexpected fgets() fail\n";
}
fclose($handle);
}
codingpp
2015-11-03 16:05:41 +08:00
楼主说的是查询 123@qq.com 能得出
张三----2015 年 10 月 2 日 10 时----80----zhangsan----1234@qq.com

大家都打错了
这题还是有点难度的,还是问培训老师吧
xfspace
2015-11-03 16:12:10 +08:00
@codingpp 得问北大青鸟 /蓝翔的校长吧,培训老师还是水
500miles
2015-11-03 16:29:36 +08:00
我天 怎么都这副模样

人都没说数据大小好么 ... 一个劲的热潮冷讽...

且不说 3P 了, 就 3T 数据吧 ........
owlsec
2015-11-03 22:58:57 +08:00
@hambut 哈哈哈你笑死我了
ryd994
2015-11-04 00:16:14 +08:00
@xfspace
@tabris17
我刚问了培训班的老师,老师当场晕过去了怎么办?
jalen
2015-11-04 08:51:59 +08:00
不解, 怎么确定就是培训老师出的题目?
hongqigong
2015-11-04 10:17:43 +08:00
@moro @ solupro @dofy 请问这个代码有什么问题? 如何来写输出的内容?

<html>
<head>
<meta charset="utf-8">
</head>
<body>
<form method="post" action="">
输入想要搜索的内容:<input type="text" name="content" /></br>
<input type="submit" value="search" />
</form>
</body>
</html>
<?php
$search=$_POST['content'];

$fh=fopen("text.txt","r");

while(! feof($fh)) ==true){
if($str['0']==$search){
echo $str['1']."</br>";
}

}

fclose($fh);

?>
zjqzxc
2015-11-04 11:06:34 +08:00
"PHP 页面输入 123@qq.com 此邮箱就能显示张三这条信息,输入其他的则不返回信息"

楼主的意思明明是:
if($str=='123@qq.com') echo '张三----2015 年 10 月 2 日 10 时----80----zhangsan----1234@qq.com';
读文件干嘛。。

是吧,,“输入其他的则不返回信息”,是这么理解的吧。
hongqigong
2015-11-04 11:20:36 +08:00
@zjqzxc 差不多 是这个意思, TXT 里面内容都是这样的格式 主要是搜索邮箱 出这列的结果 其他的都不出现 ~~~ 现在不知道怎么来写了~~~
mengzhuo
2015-11-04 11:24:04 +08:00
没有索引,没有其他条件的话
O(N)是跑不了了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/233199

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX