2012-04-17 8 views
0

行の内容全体を取得するにはどうすればよいですか?私は疑問を持っているsubstr()答えではありません。substr()からEOL?

Authors: Mr. Foo, Mr. Bar 
Date: Jan 1, 1970 
etc... 

私の$file_textには、私は上記と同様のものがあります。私はこのような何かを探しています:

$author_line = substr($file_text, 0, EOL); 

答えて

2

file()と、ファイルの内容を取得することができます場合は、自動的に、あなたのためのラインにそれをカットします。

そうでない場合は、strstr($file_text,PHP_EOL,true)

+0

いいえ、ファイルは、返された配列内の新しい要素に各行を移動します。 – GordyD

+0

それは完璧です。ありがとうございました。 – nulluser

0

トライしてみてください。(お好みで行末区切りを交換して)最初の行を取得します

foreach($lines as $line) 
{ 
    //do something 
} 
+0

引数を逆の順序で使用しています。 – MetalFrog

+0

@ MetalFrog - Merci – GordyD

+0

また、 '\ n'を二重引用符で囲む必要があります。そうしないと、新しい行として扱われません。 – DaveRandom

0

$lines = explode(PHP_EOL, $line_text); 

次に、各回線上でループを:

$author_line = strtok($file_text, "\n"); 

オルタナティブ:行の終わりを含まない最初のライン上のすべてをつかむだろう

list($author_line) = explode("\n", $file_text, 1); 
0
$author_line = substr($file_text, 0, strpos("\n")); 

。 Windowsでは\ n \ n、UNIXでは\ nを考慮する必要があります。

$author_line = substr($file_text, 0, strpos(PHP_EOL)); 
+0

これは 'PHP_EOL'のためのものです:) – Dunhamzzz

+0

ありがとう。私は最初にそれを使っていたはずです。 – Stu

2

グラブこの各ライン:より適切にコード化されたとして

$eachLine = explode(PHP_EOL, $file_text); 

を次に、あなたの通常の部分文字列だけですべてをつかむだろう。それはすべてあなたの例のようにコロンで区切っていた場合は、その後、これはあなたのすべてのためのキー=>値の配列を与える、あなたの文字列に

// Grab each Line 
$eachLine = explode(PHP_EOL, $file_text); 
$data= array(); 

foreach($eachLine as $line) { 

    $line = explode($line, ':'); 

    $data[trim($line[0])] = trim($line[1]); 

} 

のすべてのデータのキー=>値の配列を抽出するために爆発する可能性があり$dataのデータです。

+0

あなたは私がどこに行っていたかで私の心を読んでいます!!私は実際に尋ねた質問に答えたので、他の答えを正しいものとして受け入れました。 – nulluser

-1
$author_line = explode("\n", $file_text);