2010-12-13 20 views
3

PHPヘルプ、ベストプラクティスを探しています。これらの行を破る良い方法は何ですか?私は爆発を探していたまたはより良い正規表現ですか?テーブルにそれらを表示することがありますか?あなたのご意見ありがとうございます。PHPで区切られた文字列データを分割する最も良い方法は何ですか

入力ファイル:表示用

PRE:abc:KEY1:null:KEY2:/myproject/data/dat_abc_2010120810.gz1 
PRE:def:KEY1:sdsu:KEY2:mail_abc.dat.2010120810.gz1 

期待出力またはWebページ:

PRE KEY1 KEY2 
=== ==== ====================================== 
abc null /myproject/data/dat_abc_2010120810.gz1 
def sdsu mail_abc.dat.2010120810.gz1 
+2

行く - それは必要がない場合、正規表現を使用しませんが。 – casablanca

答えて

6

あなたがそのようなファイルがある場合、私はあなただったら、私は二つのステップでそれを行うだろう...

第一ステップ

利用file()を使用して、ファイルを表す配列を取得します。

第二ステップ

今、あなたはすべての別の列と出力それらを得るために)(爆発を使用することができます。

クイック例:

<?php 
$output = ""; 

$file = file("data.txt"); 
foreach ($file as $line) 
{ 
    $cols = explode (":", $line); 
    $output .= "{$cols[0]} {$cols[1]}"; 
} 
?> 

は、この情報がお役に立てば幸いです。

4

explodeはうまく動作します:

$fp = fopen('myfile.txt', 'r'); 
while ($line = fgets($fp)) 
    $parts = explode(':', $line); 
    $array = array(); 
    for ($i=0; $i<count($parts); $i+=2) { 
     $array[$parts[$i]] = isset($parts[$i+1]) ? $parts[$i+1] : 'null'; 
    } 
    print_r($array); 
} 

ウィル出力: `explode`と

Array 
(
    [PRE] => abc 
    [KEY1] => null 
    [KEY2] => /myproject/data/dat_abc_2010120810.gz1 
) 
Array 
(
    [PRE] => def 
    [KEY1] => sdsu 
    [KEY2] => mail_abc.dat.2010120810.gz1 
) 
関連する問題