Php Stripos从字符串的末尾开始

Php Stripos从字符串的末尾开始,php,stripos,Php,Stripos,我有一些代码可以搜索一个巨大的日志文件并找到一个关键字,在大多数情况下,这都在文档的底部。在这种情况下,从底部开始搜索并逐步向上搜索会更有效 $pos = stripos($body,$keyword); $snippet_pre = substr($body, $pos, SNIPPET_LENGTH); 我已经查看了strripos,虽然它在查找最后一个匹配项时实现了我想要的功能,但它听起来像是从文档的开头开始搜索,因此我会在查询中添加很多不必要的工作,因为大多数关键字都在字符串/文档

我有一些代码可以搜索一个巨大的日志文件并找到一个关键字,在大多数情况下,这都在文档的底部。在这种情况下,从底部开始搜索并逐步向上搜索会更有效

$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
}
如果您谈论的是一个庞大的日志文件,以至于您绝对不想将其全部读入内存,那么您也可以考虑使用反向查找方法,尽管这通常是不需要的。请看这里:

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

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

只是为了在我开始之前,不要急于提出解决方案。你能举一个你正在搜索的字符串的例子吗?那么你在stripos中输入的参数呢?我看不出这样的解决方案的缺点,它似乎是这样的逻辑解决方案负偏移量是如何工作的,我可以只设置-1并从末尾开始吗?如果是负偏移量,搜索将从字符串末尾的那么多字符开始。因此-1偏移量将开始从字符串末尾搜索一个字符。即使搜索是向后的,返回值仍将相对于字符串的开头。