微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP – 找到文件中的字符串,然后显示它的行号

我有一个应用程序需要打开文件,然后在其中找到字符串,并打印一个行号,其中是字符串.

例如,文件example.txt包含几个哈希:

APLF2J51 1a79a4d60de6718e8e5b326e338ae533
EEQJE2YX
66b375b08fc869632935c9e6a9c7f8da O87IGF8R
c458fb5edb84c54f4dc42804622aa0c5 APLF2J51
B7TSW1ZE
1e9eea56686511e9052e6578b56ae018
EEQJE2YX
affb23b07576b88d1e9fea50719fb3b7

所以,我想要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;

原文地址:https://www.jb51.cc/php/132871.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐