2011-11-23 2 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> 년대 사이에있는 모든을 가지고 선으로 각 라인의 줄을 추가 찾고 있어요 같아요. http://www.php.net/manual/en/function.explode.php

그것은을 수행 할 수 있습니다 그러나 다음을 수행

는 PHP 함수 explode

<?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

주제에 관해서는 그 배열에서 데이터베이스에 항목을 추가시키지 못하게했습니다. foreach에서 mysql_query에 $ output을 추가하려고했지만 추가하지 않는 것 같습니다. – TMB87

+0

MySql은 처리 할 수 ​​없습니다 PHP 배열. 따라서 배열에 추가하는 대신 루프에서 직접 삽입 쿼리를 수행 할 수 있습니다 : mysql_query ("INSERT INTO tbl_name (col_name) VALUES ('". substr ($ line, 4). "')"); – bfavaretto

1

봐 (그것을 내가 원하는 '그나마 부품을 제거 측면에서) 작동하지 않는 것 문자열을 만들고 특정 문자로 분할하여 배열을 만듭니다. 귀하의 경우, 이것은 <br>

일 수도 있고, 필요할 경우 trim 함수는 공백을 제거 할 수 있습니다.