删除某些文本和换行符,然后在X计数逗号PHP后添加换行符

时间:2016-09-14 13:43:48

标签: php mysql

我正在运行一个脚本来从思科上的'show'命令中提取信息,我希望将其放入MYSQL数据库,并将其自动化,所以我只看一下'最终数据'输出。作为一个FYI,我不能使用'SNMPget',因为设备没有此输出的OID:

因此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命令集,但我似乎无法让它做我想做的事。

有人可以提供一个可以实现上述目标的例子吗?

2 个答案:

答案 0 :(得分:0)

您需要编写一个函数:

  1. 在每个空间上展开您的字符串,然后修剪每个值
  2. 检查值是否包含字母,然后是数字
  3. 如果2为假,则输出您的值,然后输出(SELECT Col1,Col2,Col3 FROM ExampleTable WHERE ID='1234') UNION (SELECT 'Def Val' AS Col1,'none' AS Col2,'' AS Col3) LIMIT 1;
  4. 如果2为真,则仅获取数字,然后输出,
  5. 然后你必须在每个输入字符串上使用这个函数,将它们存储在一个数组中,然后用一个新的行包含它:

    ,

    输出:

    $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;
    }
    

答案 1 :(得分: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