2008-10-20 4 views
3

저는 PHP에서 최고가 아니며 누군가 도와 주면 매우 감사하게 생각합니다. 기본적으로 나는 데이터 피드의 각 라인을 파싱하고 각각의 "|" - 그런 다음 데이터베이스에 추가 할 수 있습니다. 나는 explode를 사용하여 "|"사이에서 정보를 얻는 것을 처리 할 수 ​​있다고 생각하지만, 텍스트 파일의 각 라인을 단수로 파싱 할 때 약간의 도움이 필요합니다. 실제로 더 단순하게하기 위해서, 나는 변수의 각 라인을 사용하기 만하면된다. 텍스트 영역과 폼을 사용하여 변수에 내용을 제출할 것이다. 어떤 도움이라도 대단히 감사하겠습니다!데이터 피드 파싱

답변

4

당신은 라인의 배열로 파일을 읽고 모든 분할을 수행 할 수 있습니다 : 당신이 말한대로

$lines = file("filename"); 
foreach($lines as $line) { 
    $parts = explode("|", $line); 
    // do the database inserts here 
} 

이미 예 : file_get_contents 같은과 (변수의 모든 텍스트가있는 경우()), 당신은 \ n 먼저 폭발 할 수 있고 위와 같은 foreach 문을 수행합니다.

+0

@ zuk1 : 실제 파일을 읽을 때 작동합니다. –

0

파일이 작은 경우 file() t을 사용하여 요소 당 한 줄씩 배열로 읽을 수 있습니다. 당신의 구분은 각 "라인"을 얻을로

, 당신이 당신의 텍스트 영역 포스트에서 읽는 경우 fgets()

$handle = fopen("/tmp/inputfile.txt", "r"); 
while (!feof($handle)) { 
    $buffer = fgets($handle, 4096); 
    echo $buffer; 
} 
fclose($handle); 
2

사용하여 루프에서 파일을 읽어 실패, 당신은이 개행 문자를 사용하여 기능을 폭발 사용할 수 있습니다 변수에서 배열의 새 요소로, 그러면 배열 요소에 대해 explode를 수행 할 수 있습니다. 즉

$sometext = "balh | balh blah| more blah \n extra balh |some blah |this blah"; 

$lines = explode("\n", $sometext); 
foreach($lines as $oneLine) 
{ 
    $lineElements[] = explode("|", $oneLine); 
} 

는 당신은 당신 elems의 2 차원 배열을 가지고있다.

당신이 파일에서 읽고 있다면, 당신은 단순히 여기에 설명 된 파일 기능을 사용할 수 있습니다 :

http://us2.php.net/manual/en/function.file.php

배열의 요소로 파일의 각 라인을 얻을 수 있습니다.

+0

@ zuk1 : 파일을 실제로 읽지 않는 경우에 작동합니다. –

0

당신은 둘 다 얻을 폭발 사용할 수 있습니다

$myFile = "File.txt"; 
$fh = fopen($myFile, 'r'); 
$data = fread($fh); 
fclose($fh); 
$newLines = explode("\n",$data); 

foreach($newLines as $s) 
{ 
    $parsed = explode("|",$s); 
    foreach($parsed as $item) 
    { 
    // do your db load here 
    } 
} 
1

CSV 형식을 자동으로 감지 할 수있는 라이브러리를 파싱 준비 내장 PHP있다.

예 :

$reader = new Dfp_Datafeed_File_Reader(); 
$reader->setLocation('test.csv'); 

foreach ($reader AS $record) { 
    print_r($record); 
} 

그것은 here을 다운로드 할 수 있습니다, 그리고 일부 문서 here가있다.