2016-09-14 55 views
1

我正在運行一個腳本來從思科的'show'命令中提取信息,我想將它放到MYSQL數據庫中這是自動的,所以我只看'最終數據'輸出。作爲一個供參考我不能用「SNMPGET」的設備不具備這種輸出OID的:刪除某些文本和換行符,然後在逗號後加上一個換行符PHP

所以從show命令查看信息流就像這樣:

ABC DEF GHI JKL 
     TY123 AB456 RT789 

所以我想最初的格式如下:

ABC DEF GHI JKL 123 456 789 

因此,我正在刪除換行符並刪除數字前的特定文本。

然後,我希望能夠用逗號替換空格,然後在第一個序列完成之後換行,以便在此示例中逗號的數量完成後,序列開始換行。

所以它看起來像:

ABC,DEF,GHI,JKL,123,456,789, 
MNO,PQR,STU,VWX,987,654,321, 

我試圖玩弄使用str_replace()split命令集,但我似乎無法得到它做我想做的事情。

有人可以幫助一個例子,將實現上述請?

+0

你想讓這個使用MySQL或PHP做什麼? –

+0

由PHP我認爲。最終的結果會讓它進入一個MySQL數據庫,但我認爲PHP必須首先進行格式化? – coltras

+0

可以在MySQL中執行此操作,但使用PHP會更容易 –

回答

0

你需要寫一個函數:

  1. 爆炸的串上的每個空間,然後修剪每個值
  2. 檢查是否值有字母則數字
  3. 如果2是假的,然後輸出你的值,那麼,
  4. 如果2是真的,那麼得到的只是數字,它們輸出則,

然後,你必須使用在每個輸入字符串的這個功能,將其存儲在一個數組,並用一個新行內爆吧:

$string1 = 'ABC DEF GHI JKL 
     TY123 AB456 RT789'; 
$string2 = 'MNO PQR STU VWX 
     TY987 AB654 RT321'; 

$output_array = array(); 
$output = ''; 
$output_array[] = transformString($string1); 
$output_array[] = transformString($string2); 
$output = implode("\n", $output_array); 

var_dump($output); 

function transformString($string) { 
    $return = ''; 
    $array = explode(' ', $string); 
    foreach ($array as $value) { 
     $value = trim($value); 
     if ($value == '') 
      continue; 
     preg_match('#^[A-Z]+([0-9]+)$#', $value, $matches); 
     if (empty($matches)) { 
      $return .= $value . ','; 
     } else { 
      $return .= $matches[1] . ','; 
     } 
    } 
    return $return; 
} 

輸出:

string 'ABC,DEF,GHI,JKL,123,456,789, 
MNO,PQR,STU,VWX,987,654,321,' (length=57) 
0

您需要更換每一個空間,將數字前的新行和字母轉換爲逗號字符。一對正則表達式的可以做的工作:

$txt = "ABC DEF GHI JKL 
     TY123 AB456 RT789"; 
$txt = preg_replace('#[ \n]+#i', ',', $txt); 
$txt = preg_replace('#,[a-z]+([0-9]+)#i', ',\\1', $txt); 
echo $txt; 

輸出:ABC,DEF,GHI,JKL,123,456,789

http://ideone.com/hrfIFJ