在一个txt文件中搜索多个字符串

时间:2015-08-11 08:24:45

标签: php html

我知道还有其他多个答案,但它们不符合我的代码。由于我的代码必须处理1000行+每次搜索。

我想组合2个输入的字符串,以便PHP脚本在txt文件中搜索它们并在输出时将它们组合起来。

这就是我的尝试:

$search = $_GET["search"]; 
$search2 = $_GET['search2'];
$logfile = $_GET['logfile'];


// Read from file 
$file = fopen($logfile, "r");?> 
<head><title>Searching: <?php echo $search ?></title></head>
<?php
while( ($line =  fgets($file) && $line2 = fgets($file))!= false)
{   if (stristr($line, $search)) { } if (stristr($line2, $search2)) { }  

?><font face='Arial'> <?php $lines = $line + line2; ?><?php echo $lines ?></font><hr><p><?php
}

当我运行此代码时,搜索和搜索2都填写:我得到这个输出:

1
1
1
1
1
1

那些1似乎是无限的。 我希望有人有解决方案。

输出应该是两个字符串: search =&#39; new&#39;

He is a new player
Gambling is a new sport
New is better than old

search2 =&#39;网站&#39;

It is a nice website
The website is down
The FIFA website is being built

正确的输出应该是:

He is a new player
It is a nice website
Gambling is a new sport
The FIFA website is being built
New is better than old

感谢您的阅读。

〜康纳

2 个答案:

答案 0 :(得分:3)

<?php 
$search1 = "value 1"; 
$search2 = "value 2";

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

foreach($lines as $line) 
{ 
    if(stristr($line,$search1) || stristr($line,$search2))

        echo " $line <br>"; 
} 
?>

请查看此代码是否有效。 这会为您提供$search1 $search2出现的行。 谢谢:))

答案 1 :(得分:1)

您可以尝试这样的事情:

foreach (new SplFileObject($logfile) as $lineNumber => $lineContent) {
    if(strpos($lineContent, $search) !== false
       || strpos($lineContent, $search2) !== false
    ) {
        echo $lineContent . '<br />';
    }
}