dqn48247 2015-09-23 16:39
浏览 40
已采纳

如何从数组元素中获取后续元素?

I am trying to get a specific line in a file and then next 2 lines after it. How can I get next 2 lines? The following is my code and file.

$context = 'context=regencyoutgoing';
$lines = file('/etc/asterisk/sip1.conf');
foreach($lines as $line)
{
    $find_context = strpos($line, $context);
    if($find_context !== false){
        echo $line;
    }
}   

Here is my sip1.conf:

[000201891]
type=friend
context=regencyoutgoing
username=000201891
callerid = <000201891>
host=dynamic
secret=198



[000202222]
type=friend
context=regencyoutgoing
username=000202222
callerid = <000202222>
host=dynamic
secret=2000
  • 写回答

3条回答 默认 最新

  • dongyin8009 2015-09-23 17:09
    关注

    This should work for you:

    First of all we get all array elements, which contain $context somewhere with preg_grep(). In your example something like this:

    Array
    (
        2  => context=regencyoutgoing
        12 => context=regencyoutgoing
    )
    

    After this we get the keys of the array with array_keys(). Then we simply loop through all keys and take a slice of 3 elements for each key with array_slice(), which we then merge to the result array with array_merge().

    Code:

     <?php
    
        $lines = file("/etc/asterisk/sip1.conf");
        $context = "context=regencyoutgoing";
        $matchedKeys = array_keys(preg_grep("/" . preg_qute($context, "/")  ."/", $lines));
        $result = [];
    
        foreach($matchedKeys as $key)
            $result = array_merge($result, array_slice($lines, $key, 3));
    
        print_r($result);
    
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献