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

PHP校验文本域多行输入 要求每行仅单个合法IP地址

文本域IP输入校验实现方案

校验必须以服务端(PHP)逻辑为核心,前端校验仅可作为体验优化(可被用户轻易绕过),最终实现「每行仅允许填写一个合法IP」的限制,具体实现如下:

核心校验流程

  • 接收输入后统一转换不同系统的换行符格式,按行拆分内容,过滤无有效内容的空行
  • 逐行去除首尾空白字符,校验单行内容是否为合法IP地址
  • 收集所有非法行的错误提示,只要存在非法内容就终止写入逻辑,返回错误信息
  • 全部内容校验通过后,将合法IP按每行一个的格式重新拼接,清理多余空行、无效空格后写入文件

可直接使用的PHP代码

// 接收文本域输入,统一换行符为\n格式,兼容Windows、Mac、Linux系统的换行差异
$rawInput = str_replace(["\r\n", "\r"], "\n", trim($_POST["text_area"] ?? ''));
// 按换行拆分所有行,过滤完全空白的空行
$ipLines = array_filter(explode("\n", $rawInput), function($line) {
    return trim($line) !== '';
});

$errors = [];
$validIpList = [];
foreach ($ipLines as $lineIndex => $lineContent) {
    $currentIp = trim($lineContent);
    // 校验IP合法性:如果仅允许IPv4,将下方参数改为 FILTER_VALIDATE_IP, FILTER_FLAG_IPV4
    // 仅允许IPv6则改为 FILTER_VALIDATE_IP, FILTER_FLAG_IPV6
    if (!filter_var($currentIp, FILTER_VALIDATE_IP)) {
        $errors[] = sprintf("第%d行输入「%s」不是合法IP地址", $lineIndex + 1, htmlspecialchars($currentIp));
        continue;
    }
    $validIpList[] = $currentIp;
}

// 存在非法输入时返回错误,终止文件写入
if (!empty($errors)) {
    // 此处可替换为你自己的错误处理逻辑,比如携带错误信息跳转回表单页
    foreach ($errors as $error) {
        echo "<p style='color: #ff0000;'>{$error}</p>";
    }
    exit;
}

// 所有IP校验通过,写入目标文件
$file = "ip_list.txt";
file_put_contents($file, implode("\n", $validIpList));
// 此处可追加写入成功的提示、跳转逻辑

补充说明

  • 不推荐手写正则实现IP校验,PHP内置的filter_var方法已经覆盖了所有IP合法性的边界场景(比如保留地址、边界IP、格式校验等),可靠性远高于自定义正则
  • 可额外添加前端校验提升使用体验,比如输入时实时检测行内容、即时提示错误,但绝对不能省略后端校验
  • 参考的文本域控件样式如下:
    文本域控件示例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 16:27:27