2016-03-29 108 views
-1

我有一個文本文件,它看起來象下面這樣:如何處理文本文件中,PHP

enter image description here

有沒有辦法以呼應只有每行的特定字符?以 「9954」 值

  • 最後13個的字符開頭

    • 29個字符

    我的代碼來顯示文本文件:

    <?php 
    header('Content-Type: text/html; charset=UTF-8'); 
    echo "<pre>".file_get_contents("MAGFLE_Greenbnk_Caraga.txt")."</pre>"; 
    ?> 
    

    您的幫助將是非常非常感謝
    謝謝

  • +0

    這些列是如何分開的?使用標籤? – Rizier123

    +1

    使用'file()'將文件讀入一行數組。循環訪問數組,使用正則表達式提取所需的部分。 – Barmar

    +0

    或使用'while($ line = fgets($ fp))'循環從文件中一次讀取一行,然後執行同樣的操作。 – Barmar

    回答

    0

    使用多正則表達式和遍歷所有匹配:

    $source = file_get_contents("MAGFLE_Greenbnk_Caraga.txt"); 
    $matches = []; 
    
    preg_match_all("/(9954[0-9]{25}).*(.{13}$)/um", $source, $matches); 
    
    for($i = 0; $i < count($matches[1]); ++$i) { 
        echo "Line {$i} -- "; 
        echo "chars that start with '9954': {$matches[1][$i]} --- "; 
        echo "last 13 chars: {$matches[2][$i]} <br>"; 
    } 
    

    正則表達式中包含兩個捕獲組。第一組匹配以'6654'開頭的29個字符。第二個匹配最後13個字符。

    的匹配陣列包含3個數組:

    • 第一陣列包含所有匹配線
    • 第二陣列包含來自第一捕獲組所有比賽
    • 第三數組包含從所述第二所有比賽

      :捕獲組

    我將你的數據時,得到下面的輸出

    result

    根據您的數據,這不適用於所有情況。也許你必須增加更多規則的正則表達式。