PHP – 找到文件中的字符串,然后显示它的行号
发布时间:2020-12-13 16:28:56 所属栏目:PHP教程 来源:网络整理
导读:我有一个应用程序需要打开文件,然后在其中找到字符串,并打印一个行号,其中是字符串. 例如,文件example.txt包含几个哈希: APLF2J51 1a79a4d60de6718e8e5b326e338ae533 EEQJE2YX 66b375b08fc869632935c9e6a9c7f8da O87IGF8R c458fb5edb84c54f4dc42804622aa0c5
|
我有一个应用程序需要打开文件,然后在其中找到字符串,并打印一个行号,其中是字符串.
例如,文件example.txt包含几个哈希:
所以,我想要PHP搜索“1e9eea56686511e9052e6578b56ae018”并打印出其行号,在这种情况下为4. 请注意,文件中不会有多个哈希值. 我在互联网上找到了几个代码,但没有一个似乎不起作用. 我试过这个: <?PHP
$string = "1e9eea56686511e9052e6578b56ae018";
$data = file_get_contents("example.txt");
$data = explode("n",$data);
for ($line = 0; $line < count($data); $line++) {
if (strpos($data[$line],$string) >= 0) {
die("String $string found at line number: $line");
}
}
?>
它只是说这个字符串在第0行找到….哪个是不正确的…. 最终应用比这更复杂 提前致谢 :)
超基本解决方案可以是:
$search = "1e9eea56686511e9052e6578b56ae018";
$lines = file('example.txt');
$line_number = false;
while (list($key,$line) = each($lines) and !$line_number) {
$line_number = (strpos($line,$search) !== FALSE) ? $key + 1 : $line_number;
}
echo $line_number;
内存保护版本,适用于较大的文件: $search = "1e9eea56686511e9052e6578b56ae018";
$line_number = false;
if ($handle = fopen("example.txt","r")) {
$count = 0;
while (($line = fgets($handle,4096)) !== FALSE and !$line_number) {
$count++;
$line_number = (strpos($line,$search) !== FALSE) ? $count : $line_number;
}
fclose($handle);
}
echo $line_number;
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |








