You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP逐行获取textarea内容并分组到三个容器的代码修复

问题描述

需要实现逐行获取textarea提交的内容,将所有行分组到3个容器中,原有代码存在循环逻辑错误,运行时每行内容会重复输出3次,无法达成分组效果。

原有代码缺陷
  • 换行拆分逻辑未兼容Windows系统的\r\n换行格式,直接使用\n拆分可能残留多余回车字符
  • 错误嵌套foreach行遍历和for循环,每读取1行就执行3次输出,导致单行重复打印3次
  • 未实现分组分配逻辑,仅做了简单的文本输出,无法完成内容分到3个容器的需求
修复实现

修复逻辑分为三步:首先预处理提交的文本内容,统一换行符后拆分、过滤空行;其次初始化3个分组数组,按行轮询分配到对应分组;最后遍历分组数组渲染对应容器即可。
完整修复代码如下:

<form method="POST" action="test.php">
  <textarea name="textarea" style="width:100%; height: 20vh"></textarea><br /><br />
  <input type="submit" class="button" style="float: right; cursor:pointer;" value="提交">
</form>

<?php
// 仅在表单提交时执行处理逻辑
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['textarea'])) {
    // 统一换行符,兼容多系统换行格式
    $rawContent = str_replace("\r\n", "\n", $_POST['textarea']);
    $rawLines = explode("\n", $rawContent);
    $lines = [];
    // 过滤空行,去除每行首尾空白
    foreach ($rawLines as $line) {
        $trimLine = trim($line);
        if ($trimLine !== '') {
            $lines[] = $trimLine;
        }
    }

    // 初始化3个分组容器
    $groups = [[], [], []];
    // 逐行分配到分组:第1、4、7...行分到第1组,第2、5、8...行分到第2组,第3、6、9...行分到第3组
    foreach ($lines as $idx => $line) {
        $groups[$idx % 3][] = $line;
    }

    // 渲染3个容器输出内容
    foreach ($groups as $key => $groupLines) {
        $containerNum = $key + 1;
        echo "<div style='border:1px solid #eee; padding:12px; margin:10px 0; border-radius:4px;'>";
        echo "<h4>容器{$containerNum}</h4>";
        foreach ($groupLines as $line) {
            echo $line . "<br/>";
        }
        echo "</div>";
    }
}
?>

若需要调整分组规则,比如按内容特征、固定行数划分分组,只需修改行分配阶段的分组索引计算逻辑即可。

内容的提问来源于stack exchange,提问作者Piotr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 01:01:10