在尝试仅获取Linux计算机上当前配置的网络接口的名称时,我遇到了字符串格式化问题。
1. <?php
2. $temp = shell_exec("/sbin/ifconfig | cut -b 1-10");
3. echo $temp; //Outputs: eth0 lo
4. $arr = explode(" ",$temp);
5. echo "First Location:".$arr[0]; //Outputs: eth0
6. echo "Second Location:".$arr[1]; //Outputs:
7. echo count($a); //Outputs: 165
8. ?>如何获取size=2的$arr以使echo $arr;//提供'eth0‘echo $arr1;//提供'lo’
非常感谢
更新:我认为下面的命令会对我产生魔力
ifconfig | grep -o -e "[a-z][a-z]*[0-9]*[ ]*Link" | perl -pe "s|^([a-z]*[0-9]*)[ ]*Link|\1|"但是当我从一个php文件执行它时,我做了一些错误的事情,因为浏览器没有显示任何东西。
<?php
$temp = shell_exec("ifconfig | grep -o -e \"[a-z][a-z]*[0-9]*[ ]*Link\" | perl -pe \"s|^([a-z]*[0-9]*)[ ]*Link|\\1|\"");
echo $temp;
?>发布于 2009-11-01 18:26:11
请注意,您应该检查返回值以确保调用成功退出,但基本上可以这样做:
exec('/sbin/ifconfig -s|awk \'{print $1}\'', $interfaces, $returnValue);
array_shift($interfaces);发布于 2009-11-01 18:24:30
例如,你可以这样去掉空格:
explode(' ', trim(preg_replace('/\s+/', ' ', $temp)));请注意,在Linux上,您可以通过读取/proc/net/dev来获取信息,而无需执行外部命令。
$lines = file('/proc/net/dev');
$interfaces = array();
for ($i = 2; $i < count($lines); $i++) {
$line = explode(':', $lines[$i]);
$interfaces[] = trim($line[0]);
}https://stackoverflow.com/questions/1656806
复制相似问题