条带从字符串的末尾开始



我有一些代码,搜索一个巨大的日志文件并找到一个关键字,对于大多数情况下,这是在文档的底部附近。在这种情况下,从底部开始搜索并向上搜索会更有效率。

$pos = stripos($body,$keyword);  
$snippet_pre = substr($body, $pos, SNIPPET_LENGTH);

我已经看过strripos,虽然它做了我想要的,因为在找到最后一次出现,它听起来像它从文档的开始搜索,所以我会添加很多不必要的工作,我的查询,因为大多数关键字都在字符串/文档

的底部附近

任何想法?

按换行符展开日志文件以获得数组。反转你的数组,现在你可以从末尾开始逐行搜索。

$lines = explode("n",$body);
$reversed = array_reverse($lines);
foreach($reversed AS $line) {
   // Search for your keyword
}

如果您谈论的是一个巨大的日志文件,因此您绝对不想将其全部读入内存,那么您也可以考虑反向查找方法,尽管通常不需要。在这里看到的:

使用fseek

逐行反向读取文件

如果将负偏移量设置为第三个参数,则strripos将从末尾开始向后搜索。

$pos = stripos($body,$keyword,$offset);

相关内容

  • 没有找到相关文章

最新更新