php - 有没有办法在同一个数组中提取不同的字段
问题描述
/**
*
* @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>
解决方案
首先,你不需要用cat
PHP 来读取文件,它有内置的函数。
$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']
。它始终是文件中的最后一个。
推荐阅读
- excel - 我无法更新 powerpoint VBA 上的工作表对象链接 - OneDrive 文件夹
- django - 覆盖模型中的 save() 方法以使用当前用户 Django 预填充它
- nsis - 如何在 nsis 中重新启动时移动文件
- flutter-web - flutter web项目名称、图标和描述如何处理?
- javascript - 使用 vue-resizable 调整大小的 Div
- java - Eclipse 运行错误的 java 文件
- ios - iOS - Ship Widget Extension 与部署目标 < 14 的应用程序
- python - python搜索逻辑查找列表中最后一个单词的作品
- graphql-codegen - 使用带有 Graphql 的 RTK 查询
- html - Cors 和 Onedrive