2011-11-23 53 views
0

我想解析每个IP线从下面的文件(从网上加载),我要存储在数据库中的值,所以我想把他们进入一个数组。PHP解析文件,取代不需要的项目出错

文件其装载有以下来源:

12174 in store for taking<hr>221.223.89.99:8909 

<br>123.116.123.71:8909 

<br>221.10.162.40:8909 

<br>222.135.5.38:8909 

<br>120.87.121.122:8909 

<br>118.77.254.242:8909 

<br>218.6.19.14:8909 

<br>113.64.124.85:8909 

<br>123.118.243.239:8909 

<br>124.205.154.181:8909 

<br>124.117.13.116:8909 

<br>183.7.223.212:8909 

<br>112.239.205.245:8909 

<br>118.116.235.156:8909 

<br>27.16.28.174:8909 

<br>222.221.142.59:8909 

<br>114.86.40.251:8909 

<br>111.225.105.142:8909 

<br>115.56.86.62:8909 

<br>59.51.108.142:8909 

<br>222.219.39.194:8909 

<br>114.244.252.246:8909 

<br>202.194.148.41:8909 

<br>113.94.174.239:8909 

<br><hr>total£º 24¡£ 

所以我想我在寻找采取<hr>的之间的所有内容,并通过行添加每行线。

但是执行以下操作似乎并没有工作(在以下方面提它,我不”想要的部分)

<?php 
$fileurl = "**MASKED**"; 

$lines = file($fileurl); 

foreach ($lines as $line_num => $line) { 

    $line2 = strstr($line, 'taking', 'true'); 
    $line3 = str_replace($line2, '', $line); 
    print_r($line3); 

} 

?> 

回答

1

如果您想将值添加到数组中,为什么不直接在循环中执行该操作?我会做这样的事情:

$output = array(); 
foreach ($lines as $line) { 
    if(preg_match("/<br>\d/", $line)) { 
     $output[] = substr($line, 4); 
    } 
} 
print_r($output); 
+0

完美,谢谢! – TMB87

+0

虽然在这个问题上,它不会让我在该数组添加项目到数据库中,我已经尝试在我的mysql_query添加$输出添加,但它似乎并没有添加它 – TMB87

+0

MySql无法处理PHP数组。因此,您可以直接在循环中执行插入查询,而不是添加到数组中,而是直接在循环中执行插入查询:mysql_query(“INSERT INTO tbl_name(col_name)VALUES('”。substr($ line,4)。“')”);' – bfavaretto