2016-03-29 58 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

    根据您的数据,这不适用于所有情况。也许你必须增加更多规则的正则表达式。