首页 > 解决方案 > 有没有办法在同一个数组中提取不同的字段

问题描述

/**
*
* @param array $arrConfig
* @return $config
*/
function ParseConfig( $arrConfig ) {
    $config = array();
    foreach( $arrConfig as $line ) {
        $line = trim($line);
        if( $line != "" && $line[0] != "#" ) {
            $arrLine = explode( "=",$line );
            $config[$arrLine[0]] = ( count($arrLine) > 1 ? $arrLine[1] : true );
        }
    }
    return $config;
}






exec( 'cat '. RASPI_DNSMASQ_CONFIG, $return );
      $conf = ParseConfig($return);
      $arrRange = explode( ",", $conf['dhcp-range'] );
      $RangeStart = $arrRange[0];
      $RangeEnd = $arrRange[1];
      $RangeMask = $arrRange[2];
      preg_match( '/([0-9]*)([a-z])/i', $arrRange[3], $arrRangeLeaseTime );

这从文件中提取并将数字添加到一个值

我想在同一个文件中做同样的事情,但从以 dhcp-option=6 开头的行中提取数字,

任何帮助都会很棒我是超级新人对不起

exec( 'cat '. RASPI_DNSMASQ_CONFIG, $return1 );
  $conf1 = ParseConfig($return1);
  $arrDNS = explode( ",", $conf1['dhcp-option=6,'] );
  $Dns = $arrDNS[0];

这是我的拍摄:($Dns似乎是空白的

在文件里面

interface=wlan1
dhcp-range=192.168.110.20,192.168.110.120,255.255.255.0,12h
dhcp-option=6,8.8.8.8,8.8.4.4

这是我试图拉字符串 8.8.8.8,8.8.4.4 的地方

<div class="row">
      <div class="form-group col-md-4">
        <label for="code">Enter DNS adress seprate with , </label>
        <input type="text" class="form-control" name="Dns" value="<?php echo $Dns; ?>" />
      </div>
    </div>

标签: php

解决方案


首先,你不需要用catPHP 来读取文件,它有内置的函数。

$return = file(RASPI_DNSMASQ_CONFIG, FILE_IGNORE_NEW_LINE);

ParseConfig()使用关键字 before=作为$conf数组的键。所以你想要的选项在$conf['dhcp-option'].

$arrDNS = explode(',', $conf['dhcp-option']);
if ($arrDNS[0] == '6') {
    $dns = implode(',', array_splice($arrDNS, 1));
}

请注意,由于您的ParseConfig()工作方式,您将无法解析不同的dhcp-option=X值。数组键必须是唯一的,不能有多个$conf['dhcp-option']。它始终是文件中的最后一个。


推荐阅读