Код (Text): array(53) { [0]=> string(5) "Fa0/3" [4]=> string(0) "" [5]=> string(4) "100M" [6]=> string(0) "" [7]=> string(4) "Pair" [8]=> string(1) "A" [12]=> string(0) "" [15]=> string(0) "" [16]=> string(3) "+/-" [17]=> string(2) "15" [18]=> string(6) "meters" [19]=> string(4) "Pair" [20]=> string(1) "B" [26]=> string(6) "Normal" [40]=> string(1) " " [56]=> string(0) "" [57]=> string(4) "Pair" [58]=> string(1) "B" [62]=> string(0) "" [63]=> string(2) "56" [65]=> string(0) "" [66]=> string(3) "+/-" [67]=> string(2) "15" [68]=> string(6) "meters" [69]=> string(4) "Pair" [70]=> string(1) "A" [75]=> string(0) "" [76]=> string(6) "Normal" [90]=> string(1) " " [106]=> string(0) "" [107]=> string(4) "Pair" [108]=> string(1) "C" [112]=> string(0) "" [113]=> string(3) "N/A" [128]=> string(0) "" [129]=> string(4) "Pair" [130]=> string(1) "D" [135]=> string(0) "" [136]=> string(3) "Not" [137]=> string(9) "Supported" [144]=> string(1) " " [160]=> string(0) "" [161]=> string(4) "Pair" [162]=> string(1) "D" [166]=> string(0) "" [167]=> string(3) "N/A" [182]=> string(0) "" [183]=> string(4) "Pair" [184]=> string(1) "C" [189]=> string(0) "" [190]=> string(3) "Not" [191]=> string(9) "Supported" [198]=> string(1) " " } Чтоб можно было передать sql
Если нужно разбить массив на равные куски, array_chunk() и array_values() вам в помощь. Я бы сосредоточился на другом: каким образом формируется данный массив? Можно ли его переделать в более удобный (правильный)? Ну и почистил бы его : пустые строки заменил бы на NULL. Так оно и удобнее будет в дальнейшем и приятнее для глаз.
Данный массив уже не много преобразован, и удалены пробелы которые находились в строках Код (Text): array(4) { [11]=> string(79) "Fa0/3 100M Pair A 58 +/- 15 meters Pair B Normal " [12]=> string(79) " Pair B 58 +/- 15 meters Pair A Normal " [13]=> string(79) " Pair C N/A Pair D Not Supported " [14]=> string(79) " Pair D N/A Pair C Not Supported " } Получаю я инфу от cisco 2960
Хм... Можно заморочится с preg_match() и сделать именованный массив, это будет правильней (моё скромное личное мнение), но раз ты уже всё разбил и кол-во столбцов одинаковое в каждой строке, то вышеперечисленные функции тебе в помощь
@Kvandaik, вы же в курсе, что показанная вами строка - это результат выполнения функции var_dump? Зная это, можно было и правильный запрос в поисковике составить. Код ниже мне приписывать не нужно. Проверить в песочнице PHP: <?php function unvar_dump($str) { if (strpos($str, "\n") === false) { //Add new lines: $regex = array( '#(\\[.*?\\]=>)#', '#(string\\(|int\\(|float\\(|array\\(|NULL|object\\(|})#', ); $str = preg_replace($regex, "\n\\1", $str); $str = trim($str); } $regex = array( '#^\\040*NULL\\040*$#m', '#^\\s*array\\((.*?)\\)\\s*{\\s*$#m', '#^\\s*string\\((.*?)\\)\\s*(.*?)$#m', '#^\\s*int\\((.*?)\\)\\s*$#m', '#^\\s*bool\\(true\\)\\s*$#m', '#^\\s*bool\\(false\\)\\s*$#m', '#^\\s*float\\((.*?)\\)\\s*$#m', '#^\\s*\[(\\d+)\\]\\s*=>\\s*$#m', '#\\s*?\\r?\\n\\s*#m', ); $replace = array( 'N', 'a:\\1:{', 's:\\1:\\2', 'i:\\1', 'b:1', 'b:0', 'd:\\1', 'i:\\1', ';' ); $serialized = preg_replace($regex, $replace, $str); $func = create_function( '$match', 'return "s:".strlen($match[1]).":\\"".$match[1]."\\"";' ); $serialized = preg_replace_callback( '#\\s*\\["(.*?)"\\]\\s*=>#', $func, $serialized ); $func = create_function( '$match', 'return "O:".strlen($match[1]).":\\"".$match[1]."\\":".$match[2].":{";' ); $serialized = preg_replace_callback( '#object\\((.*?)\\).*?\\((\\d+)\\)\\s*{\\s*;#', $func, $serialized ); $serialized = preg_replace( array('#};#', '#{;#'), array('}', '{'), $serialized ); return unserialize($serialized); }
Крч.. Код (Text): L*******#test cable-diagnostics tdr interface fastEthernet 0/3 Link state may be affected during TDR test TDR test started on interface Fa0/3 A TDR test can take a few seconds to run on an interface Use 'show cable-diagnostics tdr' to read the TDR results. L********#<br>Results: show cable-diagnostics tdr interface fastEthernet 0/3 TDR test last run on: January 09 13:40:26 Interface Speed Local pair Pair length Remote pair Pair status --------- ----- ---------- ------------------ ----------- -------------------- Fa0/3 100M Pair A 58 +/- 15 meters Pair B Normal Pair B 58 +/- 15 meters Pair A Normal Pair C N/A Pair D Not Supported Pair D N/A Pair C Not Supported PHP: <?php # lathe MouseZver $input = file ( 'result.txt' ); $len = array_map ( 'strlen', explode ( ' ', array_slice ( $input, 9, 1 )[0] ) ); $a = []; foreach ( array_slice ( $input, 10 ) AS $k => $v ) { $i = 0; foreach ( $len AS $n ) { if ( !$k ) { $a['key'][] = trim ( substr ( array_slice ( $input, 8, 1 )[0], $i, $n ) ); } $a[$k][] = trim ( substr ( $v, $i, $n ) ); $i += (++$n); } } $keys = implode ( '`, `', array_shift ( $a ) ); printf ( "INSERT INTO `table`( `%s` ) VALUES ( '%s' )", $keys, implode ( "' )," . PHP_EOL . " ( '", array_map ( function ( $column ) { return implode ( "', '", $column ); }, $a ) ) );