我有一些代码搜索一个巨大的日志文件并找到一个关键字,因为大多数情况下这都是在文档底部附近。在这种情况下,从底部开始我的搜索并继续努力会更有效。
$pos = stripos($body,$keyword);
$snippet_pre = substr($body, $pos, SNIPPET_LENGTH);
我看过strripos虽然它做了我想要的,但在查找最后一次出现时听起来像是从文档的开头搜索,所以很难在我的查询中添加大量不必要的工作,因为大多数关键字靠近字符串/文档的底部
有什么想法吗?
答案 0 :(得分:1)
通过换行符爆炸您的日志文件以获取数组。反转你的数组,现在你可以从最后逐行搜索。
$lines = explode("\n",$body);
$reversed = array_reverse($lines);
foreach($reversed AS $line) {
// Search for your keyword
}
如果您正在谈论一个庞大的日志文件,这样您绝对不想将其全部读入内存,您也可以查看反向搜索方法,尽管通常不需要。见这里:
答案 1 :(得分:-1)
strripos将从结尾开始并向后搜索。
$pos = stripos($body,$keyword,$offset);