2011-06-25 112 views
1

http://pastebin.com/raw.php?i=7NTGXU5R我怎麼會去通過創建具有導入TXT到MySQL

我對那些百在同一個文件

我試着工作的一個PHP的解決方案傾聽能力的解析器,但我不知道如何解析的空間,我只能找到fgetcsv這確實逗號

我應該朝向什麼方向,以什麼意義

我記得一些C++從幾年前,我在想我做一些像getli一樣的東西ne,然後將行(或我們的例子中的行)存儲到數組中 一旦完成,只需編寫一堆if語句來遍歷每行,並將每個數組中的第一個元素(列)分類爲指定的「頭」。

+0

你可以指定['fgetcsv']的分隔符(http://de3.php.net/manual/en/function.fgetcsv.php),你不應該有一個問題找到如何解析CSV文件的例子所以。然而,主要問題是您的案例中沒有固定的分隔符以及它的無序信息,例如該鏈接上有一個佈局。它不是一個統一的結構化數據文件。所以fgetcsv在這裏可能根本沒有幫助。 – Gordon

+0

如果不知道需要從輸入文件中提取什麼信息,很難回答。如果你要指定你想要導入的表格,也許會有所幫助。 –

+0

fgetcsv會使用固定寬度的行嗎?我複製粘貼整個文件到Excel中,並做了「固定寬度」,它有點工作。我試圖將所有日期導入到表中,然後稍後有人想寫一個報表或查詢時,至少他們有所有的信息可供選擇。 – tom

回答

0

像這樣的任務總是歸結爲大量的自定義字符串咀嚼代碼。你最好的武器選擇將是正則表達式。忘記fgetcsv如果文件看起來像你的文件。

基本的邏輯可能是這個樣子:

  • 通過文件函數獲取該文件的所有行。
  • 保存每個表區域包含的行一個自己的數組:
foreach ($filelines as $line) 
{ 
    $lefreportlines[] = trim(substr($line, 0, 93)); 
    $middlereportlines[] = trim(substr($line, 67, 135)); 
    ... 
} 
  • 當你完成後,開始處理每一份報告,因爲它值得。例如,最左邊的報告可以簡單地用preg_split('/ \ s + /',$ line)解析;

無論哪種方式,你都會有很多工作要做。祝你好運!