首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一个txt文件中搜索多个字符串

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

Stack Overflow用户
提问于 2015-08-11 08:24:45
回答 2查看 1.6K关注 0票数 3

我知道这方面还有很多其他的答案,但它们不适合我的代码。因为我的代码必须处理1000行+每次搜索。

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

这就是我试过的:

代码语言:javascript
复制
$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
}

当我同时使用search和search2运行这段代码时:我得到了如下输出:

代码语言:javascript
复制
1
1
1
1
1
1

而这一点似乎是无限的。我希望任何人都有解决办法。

输出应为两个字符串: search = 'new‘

代码语言:javascript
复制
He is a new player
Gambling is a new sport
New is better than old

search2 =“网站”

代码语言:javascript
复制
It is a nice website
The website is down
The FIFA website is being built

正确的产出应是:

代码语言:javascript
复制
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

感谢您的阅读。

康纳

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-11 08:40:33

代码语言:javascript
复制
<?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的行。谢谢您:)

票数 3
EN

Stack Overflow用户

发布于 2015-08-11 08:47:34

你可以试试这样的东西:

代码语言:javascript
复制
foreach (new SplFileObject($logfile) as $lineNumber => $lineContent) {
    if(strpos($lineContent, $search) !== false
       || strpos($lineContent, $search2) !== false
    ) {
        echo $lineContent . '<br />';
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31936708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档