繁体   English   中英

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

[英]Removing certain text and line breaks then adding a line break after X count of commas PHP

我正在运行一个脚本来从思科上的“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命令集来玩,但我似乎无法让它做我想做的事情。

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

你需要编写一个函数:

  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)

您需要将数字前的每个空格,换行符和字母替换为逗号字符。 一对正则表达式可以完成这项工作:

$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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM