сохранения сформировоного текста в php txt файл

Рейтинг: 0Ответов: 2Опубликовано: 14.04.2023

Здрасвуйте, написал в php код который выгружаеть информацию с mikrotik api.

<?php
$TODAY = date("Ymd_hi");
$REGION_ID = 12570;
$RECORD_TYPE = 0;
$TRANSLATION_TYPE = 1;
echo 'TRANSLATION_TIME;REGION_ID;RECORD_TYPE;PRIVATE_IPV4;PRIVATE_IP_PORT;PUBLIC_IPV4;PUBLIC_IP_PORT_END;DEST_IPV4;DEST_IP_PORT;TRANSLATION_TYPE;PUBLIC_IP_PORT';
require('routeros_api.class.php');


$API = new RouterosAPI();

$API->debug = false;
if ($API->connect('192.168.200.1', 'admin', '1')) {
     $API->write('/ip/firewall/connection/print');
    
  $READ = $API->read(false);
  $info = $API->parseResponse($READ);
   //print_r($info);

$date = time();
  foreach ($info as $row){
 $dateunix = $date - $row['timeout']+ 18000;
 //$ramtotal =$row['total-memory']/1048576;
 echo '<ul>';
 echo '<li>';
 echo gmdate("Y-m-d H:i:s", $dateunix); 
 echo ';';
 echo $REGION_ID;
 echo ';';
  echo $RECORD_TYPE;
 echo ';';
 $abontipport = $row['src-address'];
list($abontip, $abontport) = explode(":", $abontipport);
echo $abontip; 
echo ';';
echo $abontport;
  echo ';';
   $dstipport = $row['reply-dst-address'];
list($dstip, $dstport) = explode(":", $dstipport);
echo $dstip; 
echo ';';
echo $dstport;
  echo ';';
  $replydstipport = $row['dst-address'];
list($replydstip, $replydstport) = explode(":", $replydstipport);
echo $replydstip; 
echo ';';
echo $replydstport;
echo ';';
echo $TRANSLATION_TYPE;
  echo ';'; 
  echo $replydstport;
 echo '</li>';
echo '</ul>';
      


 }
    
  
  
} else {
 echo "Ошибка подключения к MikroTik API.\n";
 }
echo $TODAY; "<br>";
?>

Результат

TRANSLATION_TIME;REGION_ID;RECORD_TYPE;PRIVATE_IPV4;PRIVATE_IP_PORT;PUBLIC_IPV4;PUBLIC_IP_PORT_END;DEST_IPV4;DEST_IP_PORT;TRANSLATION_TYPE;PUBLIC_IP_PORT
2023-04-14 10:01:08;12570;0;172.16.23.57;46832;109.248.56.253;46832;172.217.13.195;443;1;443
2023-04-14 10:01:27;12570;0;172.16.23.47;32014;109.248.56.253;57939;177.84.149.19;15784;1;15784
2023-04-14 10:01:31;12570;0;37.29.22.70;24584;37.29.22.70;24584;109.248.56.125;1;1;1
2023-04-14 10:01:08;12570;0;172.16.21.24;39556;109.248.56.253;39556;31.13.81.9;443;1;443
2023-04-14 10:01:08;12570;0;172.16.23.28;38168;109.248.56.253;38168;64.233.163.188;5228;1;5228
2023-04-14 10:01:08;12570;0;172.16.24.35;42638;109.248.56.253;42638;216.58.210.138;443;1;443
2023-04-14 10:01:30;12570;0;172.16.23.47;32014;109.248.56.253;32014;88.242.134.14;23382;1;23382
2023-04-14 10:01:30;12570;0;172.16.21.28;40681;109.248.56.253;40681;216.58.210.170;443;1;443

Нужна помош как я могу сохранить резултат в txt файл с названием $TODAY_IPNAT_ $REGION_ID.txt Где $TODAY - текущая время; $REGION_ID - значения с $REGION_ID.

Ответы

▲ 2

что-то подобное у вас должно быть

$filename = date("His") . "_IPNAT_{$REGION_ID}.txt";
$csv = fopen($filename, "w+");
foreach ($info as $row){
     $dateunix = $date - $row['timeout']+ 18000;
     
     [$dstIP, $dstPort] = explode(':', $row['dst-address']);
     $data= [
         gmdate("Y-m-d H:i:s", $dateunix),
         $REGION_ID,
         $RECORD_TYPE,
         ...explode(":", $row['src-address']),
         ...explode(":", $row['reply-dst-address']),
         $dstIP,
         $dstPort,
         $TRANSLATION_TYPE,
         $dstPort
     ];
     fputcsv($csv, $data);
 }
 fclose($csv);
▲ 0

Вставь примерно такой код вместо своего цикла foreach:

$content = array();
foreach ($info as $row)
{
    $dateunix = $date - $row['timeout'] + 18000;
    $abontipport = $row['src-address'];
    list($abontip, $abontport) = explode(":", $abontipport);
    $dstipport = $row['reply-dst-address'];
    list($dstip, $dstport) = explode(":", $dstipport);
    $replydstipport = $row['dst-address'];
    list($replydstip, $replydstport) = explode(":", $replydstipport);
    $string = gmdate("Y-m-d H:i:s", $dateunix) . ';'
                . $REGION_ID . ';'
                . $RECORD_TYPE . ';'
                . $abontip . ';'
                . $abontport . ';'
                . $dstip . ';'
                . $dstport . ';'
                . $replydstip . ';'
                . $replydstport . ';'
                . $TRANSLATION_TYPE . ';'
                . $replydstport;
    $content[] = $string;
}

$fp = fopen(date("Y-m-d-h-i-s") . '_IPNAT_' . $REGION_ID . "txt", 'w+');
fwrite($fp, implode(PHP_EOL, $content));
fclose($fp);