2011-05-04 72 views
0

我有一個文件file.txt。該文件包含遍及整個文件的部分和部分。 I 正試圖讀取最後和第一個關鍵詞之間的部分。如何從php中的文件中獲取複製零件

我已經設法得到第一個和最後一個關鍵詞,但我無法讀取關鍵詞之間的界限。

這裏是我的腳本

$file=file('file.txt'); 
    $begin = 'first_line'; 
    $end='last_line'; 
    foreach ($file as $lineNumber => $line) { 
      $lineNumber++; 
      if (strpos($line,$begin)) 
      { 
      echo $lineNumber.$line."<br/>"; 
      } 
      elseif (strpos($line,$end)) 
      { 
      echo $value."<br/>"; 
      } 
      echo $lineNumber. $line."<br/>"; 
      } 

請有人幫助我。

+2

你能提供一個例子輸入文件,所以我們可以看到這個問題? – 2011-05-04 12:03:16

回答

0

這將做到這一點:

$file = file('file.txt'); 

$begin = 'first_line'; 
$end = 'last_line'; 

$isInside = false; 
foreach ($file as $lineNumber => $line) 
{ 
    $lineNumber++; 

    if (!(strpos($line,$begin)===false)) 
     $isInside = true; 

    if ($isInside) 
     echo $lineNumber." : ".$line."<br/>"; 

    if (!(strpos($line,$end)===false)) 
     $isInside = false; 

} 

幾點:

  • 你都不顧一切顯示,我的腳本只顯示$之間的線路開始和結束$。
  • 您的比較是區分大小寫的
  • 您有一個使用strpos的重大錯誤,並假設它在匹配時返回true。如果字符串在開頭匹配,它也可以返回0,因此使用===來捕捉這個。請參閱strpos page上的免責聲明。
+0

感謝這工作完美..非常感謝您的快速響應... – user731144 2011-05-04 14:11:17

+0

@ user731144沒問題 - 你介意關閉這個問題嗎? (只需點擊答案旁邊的綠色勾號) - 謝謝! – 2011-05-04 14:17:21

0
$file=fopen("welcome.txt","r"); 
while(!feof($file)) 
{ 
    $open=fgets($file); 
    print $open; 
} 
fclose($file); 
1

在這裏你去:

$lines=file('data.txt'); 
$begin = 'first_line'; 
$end='last_line'; 

$switch = false; 
$content = ""; 
foreach ($lines as $line_num => $line) { 
    if(strpos($line, $begin) !== false) {$switch = true;continue;} 
    if(strpos($line, $end) !== false) $switch = false; 
    if(!$switch) continue; 
    $content .= "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n"; 
} 
echo $content; 
+0

非常感謝你的答案..這也正在完成我想做的事情...... – user731144 2011-05-04 14:29:33

相關問題