ccszfdasr
2021-03-09 00:32
采纳率: 85.7%
浏览 74
已采纳

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

  • 已采纳

    你解析程序有问题,每次读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;
    ?>
    已采纳该答案
    1 打赏 评论
  • wanmeikakaxi 2021-03-09 07:17

    你上面gethostbyname函数就是转换ip的

    打赏 评论
  • ccszfdasr 2021-03-09 12:15

    给你你也打不开  ,需要国外代理ip才能打开的,这个是个下载地址,他是打开直接下载文本

    文本里内容这这样,我是想把域名转成ip

    u1.p.abcdefgh.io:80:wdkqptfr-1:42ft0hk7k5yu
    p.abcdefgh.io:80:wdkqptfr-2:42ft0hk7k5yu
    u1.p.abcdefgh.io:80:wdkqptfr-3:42ft0hk7k5yu
    u2.p.abcdefgh.io:80:wdkqptfr-4:42ft0hk7k5yu
    u1.p.abcdefgh.io:80:wdkqptfr-5:42ft0hk7k5yu
     

    打赏 评论

相关推荐 更多相似问题