У меня есть скрипт подключения к роутеру 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 дает мне вывод, как <pppoe-0404>
как $nodename
тогда этот бит лишает его $nodename=substr($nodename,7,-1);
в 0404
зачистив первые 7 и последние 1 символов.
Проблема возникает, если был перезапуск cpe и $nodename
становится 0404-1
, Как мне раздеться -1
с конца если появится?
Я старался $nodename=rtrim($nodename, "-1");
но тогда все узлы заканчиваются на 1
потеряет последнюю цифру от имени. 0401
станет 040
что неверный вывод.
Там может быть много других вещей, чтобы принять во внимание, но чтобы ответить на ваш вопрос, вы можете сделать что-то вроде этого:
first check if there was a restart, then:
$nodename = explode("-", $nodename);
$nodename = $nodename[0];
Других решений пока нет …