Heim  >  Artikel  >  Backend-Entwicklung  >  字符串截取,该怎么解决

字符串截取,该怎么解决

WBOY
WBOYOriginal
2016-06-13 13:25:07891Durchsuche

字符串截取
bri=bridge0 if1=wan if2=lan if3=vlan mac=00:11:22:1d:2d:3d ip=192.168.100.1 netmask=255.255.255.0 arp=arp state=stop

bri=bridge1 if1=wan mac=00:01:2B:4C:6D:9F ip=192.168.1.125 netmask=255.255.255.0 state=stop

这是我保存的配置文件
但是 if打头的是多选的,个数是不固定的,最多8个,我想取出 if的值
也就是
bridge0 : wan lan vlan
bridge1 : wan
这条数据我转成数组是

PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->Array
(
    [0] => Array
        (
            [bri] => bridge0
            [if1] => wan
            [if2] => lan
            [if3] => vlan
            [mac] => 00:11:22:1d:2d:3d
            [ip] => 192.168.100.1
            [netmask] => 255.255.255.0
            [arp] => arp
            [state] => stop
        )

    [1] => Array
        (
            [bri] => bridge1
            [if1] => wan
            [mac] => 00:01:2B:4C:6D:9F
            [ip] => 192.168.1.125
            [netmask] => 255.255.255.0
            [state] => stop
        )

)

请问有什么好的办法么,难道我真要
转成数组之后在根据键值判断

------解决方案--------------------
PHP code
$s = "bri=bridge0 if1=wan if2=lan if3=vlan mac=00:11:22:1d:2d:3d ip=192.168.100.1 netmask=255.255.255.0 arp=arp state=stop";
parse_str(strtr($s, ' ', '&'), $a);
print_r($a);
<br><font color="#e78608">------解决方案--------------------</font><br>
不就是找哪个key是if开头的吗.<br><br>
PHP code
[User:root Time:17:19:16 Path:/home/liangdong/php]$ php preg.php 
bridge0: wan lan vlan
bridge1: wan
[User:root Time:17:19:16 Path:/home/liangdong/php]$ cat preg.php 
<?php $str = <<<EOF
bri=bridge0 if1=wan if2=lan if3=vlan mac=00:11:22:1d:2d:3d ip=192.168.100.1 netmask=255.255.255.0 arp=arp state=stop
bri=bridge1 if1=wan mac=00:01:2B:4C:6D:9F ip=192.168.1.125 netmask=255.255.255.0 state=stop
EOF;

$rows = explode(PHP_EOL, $str);
foreach ($rows as $row) {
        $cols = preg_split('/\s+/', $row);
        $line = explode('=', $cols[0])[1] . ":";
        foreach ($cols as $col) {
                $fields = explode('=', $col);
                if (strncmp($fields[0], "if", 2) === 0) {
                        $line .= " " . $fields[1];
                }
        }
        echo $line . PHP_EOL;
}
?> <div class="clear">
                 
              
              
        
            </div>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn