0

mikrotik ルーターに接続し、そこからトラフィック統計を読み取るスクリプトがあります。

これが私のコードです:

$y = 0;
foreach ($ARRAYD as $d) {  
    $nodename=$ARRAYD[$y]['target'];  
    //$nodename=trim($nodename);  
    $nodename=substr($nodename,7,-1);//    
    //$nodename=rtrim($nodename, "-1");  

    $traff_bytes=$ARRAYD[$y]['bytes'];  
    $byte_values = preg_split('/\//',$traff_bytes);  

    if ($debug==0) {    
        $fr = fopen($myfile.$nodename,"w");  
        fwrite($fr,$nodename." ");  
        fwrite($fr,time()." ");  
        fwrite($fr,$byte_values[0]." ");  
        fwrite($fr,$byte_values[1]."");  
        fclose($fr);  
        $y++;  
   }  
}

API 応答は 、このビットが最初の 7 文字と最後の 1 文字を削除することで、次のよう<pppoe-0404>に出力を返します。$nodename
$nodename=substr($nodename,7,-1);0404

この問題は、cpe の再起動があり$nodename0404-1. -1表示された場合、最後から削除するにはどうすればよいですか?

試してみ$nodename=rtrim($nodename, "-1");ましたが、 で終わるすべてのノード1で名前の最後の桁が失われます。どちらが間違った出力0401になるでしょう。040

4

1 に答える 1

1

他にも考慮すべきことがたくさんあるかもしれませんが、あなたの質問に答えるには、次のようにすることができます。

first check if there was a restart, then:

$nodename =  explode("-", $nodename);
$nodename = $nodename[0];
于 2016-02-18T14:46:03.313 に答える