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

PHP提取Gmail垃圾IP写入封禁文件末尾出现Array字符串求解决

问题原因

  • fetchEmails方法存在变量名大小写错误:赋值时使用变量$ip,推入数组时错误使用大写的$IP,PHP变量大小写敏感,此处会存入非预期的空值/未定义值。
  • updateBlockList方法数组合并逻辑错误:fetchEmails返回的$ips本身就是一维IP数组,使用[$ips]包裹后再合并会生成二维数组。
  • 写入文件时直接传入数组:file_put_contents要求传入字符串参数,传入数组时PHP会默认将数组转换为字符串Array,这是文件末尾出现多余字样的直接原因。

修复代码

1. 修正fetchEmails变量大小写

if ($ip) {
    echo $ip;
    array_push($found, $ip); // 改为小写$ip,和赋值变量保持一致
}

2. 修正updateBlockList合并与写入逻辑

private function updateBlockList($ips) {
    // 读取文件时忽略每行末尾的换行符,避免后续去重逻辑失效
    $blockedIPs = file($this->blockFile, FILE_IGNORE_NEW_LINES);
    // 直接合并两个一维数组,去掉包裹$ips的方括号
    $blockedIPs = array_merge($blockedIPs, $ips);
    $blockedIPs = array_filter($blockedIPs);
    $blockedIPs = array_unique($blockedIPs);
    sort($blockedIPs);
    // 将数组拼接为带换行的字符串后再写入
    $this->writeFile(
        $this->blockFile,
        implode(PHP_EOL, $blockedIPs) . PHP_EOL
    );
}

writeFile方法无需修改,调整后传入的参数已经是符合要求的字符串格式。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:15:03