[英]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
命令集来玩,但我似乎无法让它做我想做的事情。
有人可以帮一个实现上述目的的例子吗?
你需要编写一个函数:
,
,
然后你必须在每个输入字符串上使用这个函数,将它们存储在一个数组中,然后用一个新行进行内嵌:
$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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.