在PHP中爆炸数组值

时间:2012-06-04 18:25:19

标签: php arrays

我正在处理一个使用代理连接到服务器的脚本,通过列表直到找到工作代理。

代理列表如下:

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,

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

2 个答案:

答案 0 :(得分:5)

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

$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);

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

答案 1 :(得分: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);




?>