2016-04-30 11 views
1

は、私は次のようにtxtファイルを読んでいます:| phpで区切られた行からPHPの情報を取得します。

$handle = fopen($captionTextFile, "r"); 
    if ($handle) { 
     while (($line = fgets($handle)) !== false) { 
      echo ($line); 
     } 
     fclose($handle); 
    } 

// Output 
IMAG0986.jpg|Title something 1 here|<b>Description</b><br />You can use HTML as you can see! 
IMAG0988.jpg|Title something 2 here|<b>Description</b><br />You can use HTML as you can see! 
etc... 

は今、私は最初の間の値のみを保存したいです| php配列の行ごとに。私が持っているつもり何の例:

$json = '{"IMAG0986.jpg": "Title something 1 here", 
      "IMAG0988.jpg": "Title something 2 here"}'; 

このように、後でこのアレイにアクセスするには:

$obj = json_decode($json); 
print $obj->{'IMAG0986.jpg'}; // print: "Title something 1 here" 

私がいる問題は、私はラインから値を渡す行う方法ですアレイに?助けてください?

+0

() ''と 'fgetcsv |'して、 '$ラインを使用する[0]'と '$行[1]'または単に '')(爆発に現在の '$ line'です。 – AbraCadaver

答えて

1

使用file()最後にjson_encode()を使用し、arrayvalueとして|区切り文字でexplode()を使用してkey第二として第一部分を追加し、arrayにファイルの行を読むこと。

ような何か:

<?php 
$captionTextFile = "test.pipe"; 
$arrayFinal = array(); 
$lines = file($captionTextFile); 
foreach($lines as $line) { 
    $array = explode("|", $line); 
    $arrayFinal[$array[0]] = $array[1]; 
    } 
print_r(json_encode($arrayFinal)); 
//{"IMAG0986.jpg":"Title something 1 here","IMAG0988.jpg":"Title something 2 here"} 

//If you don't need json, just access the array by key: 
echo $arrayFinal['IMAG0986.jpg']; 
//Title something 1 here 

1

目的のJSON結果を得るために、オブジェクト内のキーと値に行を書き込むことができます。explode()

$data = new stdClass(); 

$handle = fopen($captionTextFile, "r"); 
if ($handle) { 
    while (($line = fgets($handle)) !== false) { 
     $row = explode('|', $line); 
     $data->{$row[0]} = row[1]; 
    } 
    fclose($handle); 
} 

json_encode($data); 
+0

良い答えですが、 'fopen'の代わりに' file'を使って改善することができます –

関連する問題