如何从php中的文件中获取重复的部分

时间:2011-05-04 12:02:12

标签: php

我有一个文件file.txt。此文件包含在整个文件中重复出现的部分和部分。一世 我试图阅读最后一个和第一个关键词之间的部分。

我设法获得了第一个和最后一个关键词,但我无法阅读关键词之间的界限。

这是我的剧本

$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/>";
            }

请有人帮助我。

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

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

答案 2 :(得分: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;

}

有些观点:

  • 您正在显示所有内容,我的脚本只显示$ begin和$ end之间的行。
  • 您的比较区分大小写
  • 您使用strpos时遇到了一个主要错误,并假设它匹配时返回true。如果字符串在开头匹配,它也可以返回0,因此使用===来捕获它。请参阅strpos page上的免责声明。