ccszfdasr 2021-03-09 00:32 采纳率: 90.9%
浏览 87
已采纳

php代码处理域名转成ip地址显示出来

yu.php    代码如下
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
<?php error_reporting(0);
$handle = fopen ("https://xxxxx.xxxxxxx.xx/proxy/list/download/crvyxguhtddwrxdsuifnpvwwhngwhwngixtfxanl/-/xxxxx/username/domain/", "rb");
$contents = "";
do {
    $data = fread($handle, 1024);
    if (strlen($data) == 0) {
        break;
    }
    $url=parse_url ($data);
    if(isset($url['host'])){
        $new =$url['host'];
    }else{
        $new =$url['scheme'];
    }
    $new_ip = gethostbyname($new);
    $new_data = str_replace($new,$new_ip,$data);
    $contents.= $new_data;
} while(true);
fclose ($handle);

echo $contents;
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
打开yu.php返回的数据如下

185.30.232.28:80:yzqmiwpc-1:wq6gzfzk6u3u
185.30.232.28:80:yzqmiwpc-2:wq6gzfzk6u3u
xx.p.xxxxxxxx.xx:80:yzqmiwpc-3:wq6gzfzk6u3u
xx.p.xxxxxxxx.xx:80:yzqmiwpc-4:wq6gzfzk6u3u
185.30.232.28:80:yzqmiwpc-5:wq6gzfzk6u3u

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
想要得到的结果如下! 
  yu.php里代码应该怎么写才能得到以下结果

185.30.232.28:80:yzqmiwpc-1:wq6gzfzk6u3u
185.30.232.28:80:yzqmiwpc-2:wq6gzfzk6u3u
185.30.232.28:80:yzqmiwpc-3:wq6gzfzk6u3u
185.30.232.28:80:yzqmiwpc-4:wq6gzfzk6u3u
185.30.232.28:80:yzqmiwpc-5:wq6gzfzk6u3u
 

  • 写回答

3条回答 默认 最新

  • 斯洛文尼亚旅游 2021-03-09 08:59
    关注

    你解析程序有问题,每次读1024字节数据后马上解析,有些数据数据块不满足url的格式,导致域名无法全部获取到ip地址。

    应该全部读取数据后,按照原始数据格式explode拆分成数组或者正则提取域名,根据域名获取ip在替换域名

    如果你确定格式和你贴出来的那样,可以用下面的代码解析

    <?php error_reporting(0);
    
    $contents =<<<s
    bbs.csdn.net:80:wdkqptfr-1:42ft0hk7k5yu
    news.163.com:80:wdkqptfr-2:42ft0hk7k5yu
    www.w3dev.cn:80:wdkqptfr-3:42ft0hk7k5yu
    www.youtube.com:80:wdkqptfr-4:42ft0hk7k5yu
    ask.csdn.net:80:wdkqptfr-5:42ft0hk7k5yu
    blog.csdn.net:80:wdkqptfr-5:42ft0hk7k5yu
    s;
    
    $arr=explode("\n",$contents);//注意这里如果你的数据格式不是用换行符\n分隔每行数据
    $count=count($arr);
    for($i=0;$i<$count;$i++){
      $item=explode(":",$arr[$i]);
      $ip=gethostbyname($item[0]);
      if($ip!=$item[0]){
        $arr[$i]=str_replace($item[0],$ip,$arr[$i]);
      }
    }
    $contents=implode("<br>",$arr);
    
    echo $contents;
    ?>
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?