2012-03-07 7 views
0

テキストファイルの特定の列を選択します。私はPHPを使用しています。そのファイルの内容がphpを使用してテキストファイルから列を取得する方法

F: TC#    Alpha  1 A     Z 
F: TC#    Alpha  2 A     Z 
F: TC#    Alpha  3 A     Z 
F: TC#    Alpha  1 0     3 

ある今、私はPHPを使用してそれを行う方法を私ができたコンテンツ3 A.列全体を選択したいですか?

答えて

1

ファイルのスペース区切りはありますか?ちょうどexplode()を使用してください。

http://php.net/manual/en/function.explode.php

$line = 'Joe Jack Jill Jimmy Jerom Jolly Jecob Jason Jasper'; 
$cols = explode(' ', $line); 

echo $cols[1]; // Will return "Jack" 
1

あなたはexplodefileを(場合には、そのファイルには多くの行があります)組み合わせることができます。

<?php 
$lines = file('file.txt'); 
foreach ($lines as $line) { 
    $parts = explode(' ', $line); 
    echo isset($parts[1]) ? $parts[1] : 'N/A' ; 
} 
0
$fh = fopen('textfile.txt', 'r'); // open input file 
$line= fgets($fh); // get a line from the file 
$second = (preg_split("/[\s]+/", $line))[1]; // get 2nd column in a split by whitespace 
fclose($fh); // close file 
+0

私は質問を更新しました:3Aが異なる列を表す場合たとえば、この変更を行います。これをチェックしてください –

0

あなただけの行の文字列3 A平野のoccuranceに選択したい場合は、この操作を行うことができます:

$search = "3 A"; 
$matches = array(); 
$fp = fopen("file.txt", "r"); 
while (!feof($fp)) { 
    $line = fgets($fp, 4096); 
    if (strpos($line, $search) !== false) { 
    $matches[] = $line; 
    } 
} 
print_r($matches); // voila 

3 Aののoccuranceがでなければなりません場合特定の列、物事はより複雑になっています。各行(「行」)を、各「列」の要素を含む配列に分割する必要があります。

スペース文字(またはタブ?ファイルはどのように見えますか?)で文字列を爆発させることができますが、これは問題がある可能性があります。 3 Aが単一の「列」に含まれている場合、になります。

固定幅テーブルの場合(例は次のようになります)、各フィールドの長さを見つけ、線を数個に切断します。 例:

// how long is each field? 
$field_legths = array(20, 11, 22, 3); 

$conditions = array(); 
$conditions[2] = "3 A"; // search "3 A" in 3rd field (index 2) 

$matches = array(); 
$fp = fopen("file.txt", "r"); 
while (!feof($fp)) { 
    $line = fgets($fp, 4096); 

    // split line into row array 
    $cursor_pos = 0; 
    $row = array(); 
    foreach ($field_legths as $length) { 
    $row[] = trim(substr($line, $curser_pos, $length)); 
    $cursor_pos += $length; 
    } 

    // search row array for conditions 
    foreach ($conditions as $index => $search) { 
    if ($row[$index] == $search) { 
     $matches[] = $row; 
     break; 
    } 
    } 
} 
print_r($matches); // voila 

実際の表のレイアウトを調整します。

// how long is each field? 
$field_legths = array(20, 11, 2, 20, 3); 

$conditions = array(); 
$conditions[2] = "3"; 
$conditions[3] = "A"; 
関連する問題