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条回答 默认 最新

  • Go 旅城通票 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 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误