我正在处理一个使用代理连接到服务器的脚本,通过列表直到找到工作代理。
代理列表如下:
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,
但我不确定最简单(也是最有效)的方法。有什么建议吗?
答案 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);
?>