PHP中如何按每6行分割字符串生成单服务器信息数组
PHP按6行一组拆分服务器信息字符串实现方案
核心实现思路
不要通过匹配-分隔线做拆分标记(字段内容可能包含-会导致拆分错误),直接按固定行数切分即可,步骤如下:
- 先统一原始字符串的换行符,兼容Windows、Linux、旧Mac系统的不同换行规则,避免行数统计错误
- 将字符串按换行符拆分为逐行组成的索引数组,过滤多余空行,重置连续索引
- 用PHP内置函数按每6个元素为一组切分数组,每组对应单台服务器的完整文本
- 按需对分组结果做二次处理,比如移除每组末尾的分隔线、拼接为字符串格式等
可直接运行的代码示例
<?php // 传入你的原始服务器信息字符串即可 $rawContent = "你的原始多服务器信息字符串"; // 统一换行符,消除不同系统的换行差异 $normalizedContent = str_replace(["\r\n", "\r"], "\n", $rawContent); // 拆分为逐行数组,过滤空值,重置连续索引 $lines = array_values( array_filter( explode("\n", $normalizedContent), fn($line) => trim($line) !== '' ) ); // 按每6行一组拆分 $serverGroups = array_chunk($lines, 6); // 可选:将每组拼接为单独的字符串,同时移除每组最后一行的分隔线 $serverTextArray = array_map(function($group) { // 不需要移除分隔线就注释掉下一行 array_pop($group); return implode("\n", $group); }, $serverGroups); // 最终得到的$serverTextArray就是每个元素对应单台服务器内容的数组 ?>
注意事项
如果原始字符串可能存在格式缺省、内容错位的问题,可以在
array_chunk拆分后增加校验逻辑,判断每个分组的元素数量是否为6,过滤掉长度不符合要求的异常分组即可,避免脏数据影响后续处理。
内容的提问来源于stack exchange,提问作者Jack Norris
相关产品推荐
相关产品推荐

