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

PHP如何将数组中匹配的IP及对应国家代码结果存入变量$match

实现方案

前置优化说明

  1. file()函数读取文件每行时默认会携带行尾换行符,直接传入geoip_country_code_by_name可能导致匹配异常,建议先对每行IP做trim()处理去除空白字符
  2. foreach($contents as $ip => $line)语法中=>左侧是数组键名(也就是你拿到的下标),右侧才是存储的IP行内容,不需要获取下标时直接用foreach($contents as $line)读取IP即可

场景1:仅存储第一个匹配到的结果

如果只需要保留第一个匹配到的GB对应IP记录,代码如下:

<?php
$ipfilename = "iplist.txt";
$contents = file($ipfilename);
$match = ''; // 先初始化存储变量

foreach($contents as $line) {
  $ip = trim($line);
  $country = geoip_country_code_by_name($ip);
  if ($country == "GB") {
    // 拼接需要的格式直接赋值给$match
    $match = $country . " " . $ip;
    break; // 不需要继续匹配后续IP的话可以加break终止循环,否则会覆盖为最后一个匹配的结果
  }
}
?>

场景2:存储所有匹配到的结果

如果文件中可能存在多个归属GB的IP,建议用数组存储所有匹配结果:

<?php
$ipfilename = "iplist.txt";
$contents = file($ipfilename);
$match = []; // 初始化为数组存储多条记录

foreach($contents as $line) {
  $ip = trim($line);
  $country = geoip_country_code_by_name($ip);
  if ($country == "GB") {
    // 追加匹配结果到数组
    $match[] = $country . " " . $ip;
  }
}

// 如果需要把所有结果拼接成完整字符串,可以使用implode:
// $match = implode(PHP_EOL, $match);
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:24:02