我有一些代码搜索一个巨大的日志文件,并找到一个关键字,对于大多数情况下,这是接近文档的底部。在这种情况下,从底部开始搜索并向上搜索会更有效率。
$pos = stripos($body,$keyword);
$snippet_pre = substr($body, $pos, SNIPPET_LENGTH);我已经研究了strripos,虽然它做的是我想要的,就像在查找最后一个匹配项一样,但听起来它是从文档的开头开始搜索的,所以我将在查询中添加许多不必要的工作,因为大多数关键字都在字符串/文档的底部附近
有什么想法吗?
发布于 2013-04-10 08:27:12
按换行符分解日志文件以获得一个数组。反转您的数组,现在您可以从末尾逐行搜索。
$lines = explode("\n",$body);
$reversed = array_reverse($lines);
foreach($reversed AS $line) {
// Search for your keyword
}如果您谈论的是一个庞大的日志文件,以至于您绝对不想将其全部读入内存,那么您也可以考虑反向查找方法,尽管这通常不是必需的。请看这里:
发布于 2013-04-10 09:05:21
如果将负偏移量设置为第三个参数,则strripos将从末尾开始并向后搜索。
$pos = stripos($body,$keyword,$offset);https://stackoverflow.com/questions/15914876
复制相似问题