0

我正在编写一个使用代理连接到服务器的脚本,遍历列表直到找到一个工作代理。

代理列表如下:

127.0.0.1:8080
127.0.0.1:8080
127.0.0.1:8080
127.0.0.1:8080
127.0.0.1:8080
127.0.0.1:8080
127.0.0.1:8080

当然,它不是一遍又一遍地使用相同的IP和端口。现在,最初我只是打算file()将它们全部放入一个数组中,但这显然会留下一个包含整行值的数组。

理想情况下,我想要的是一个数组

"127.0.0.1" => 8080,
"127.0.0.1" => 8080,
"127.0.0.1" => 8080,
"127.0.0.1" => 8080,
"127.0.0.1" => 8080,
"127.0.0.1" => 8080,
"127.0.0.1" => 8080,
"127.0.0.1" => 8080,

但我不确定最简单(也是最有效)的方法。有什么建议么?

4

2 回答 2

4

循环文件并进行一些解析:

$path = './file.txt';

$proxies = array();
foreach(file($path, FILE_SKIP_EMPTY_LINES) as $line) {
  $proxy = trim($line);
  list($ip, $port) = explode(':', $proxy);

  $proxies[$ip] = $port;
}

var_dump($proxies);

应该注意,您的“预期”示例是无效的数组表示法,因为每个元素的键都是相同的。但我只是假设您要进行格式化。

于 2012-06-04T18:28:59.713 回答
0

使用以下代码

<?php

$data = "127.0.0.1:8080
    127.0.0.1:8080
    127.0.0.1:8080
    127.0.0.1:8080
    127.0.0.1:8080
    127.0.0.1:8080
    127.0.0.1:8080";


    $urls = explode("\n",$data);

    $new_data = array();
    foreach($urls as $url){
        if($url!=""){
            $url_parts = explode(":",$url);
            $new_data[] = array($url_parts[0]=>$url_parts[1]);
        }
    }

    print_r($new_data);




?>
于 2012-06-04T18:35:10.350 回答