Stripos从字符串的结尾开始

时间:2013-04-10 00:22:47

标签: php stripos

我有一些代码搜索一个巨大的日志文件并找到一个关键字,因为大多数情况下这都是在文档底部附近。在这种情况下,从底部开始我的搜索并继续努力会更有效。

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

我看过strripos虽然它做了我想要的,但在查找最后一次出现时听起来像是从文档的开头搜索,所以很难在我的查询中添加大量不必要的工作,因为大多数关键字靠近字符串/文档的底部

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

通过换行符爆炸您的日志文件以获取数组。反转你的数组,现在你可以从最后逐行搜索。

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

如果您正在谈论一个庞大的日志文件,这样您绝对不想将其全部读入内存,您也可以查看反向搜索方法,尽管通常不需要。见这里:

Read a file backwards line by line using fseek

答案 1 :(得分:-1)

如果您将负偏移设置为第三个参数,

strripos将从结尾开始并向后搜索。

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