sam.php
<?php
$file = "tp2.txt";
$fh1 = fopen($file, "r") or die("File ($file) does not exist!");
$fh2 = fopen("tp.txt", "r") or die("File ($file) does not exist!");
$fh3 = fopen("tp3.txt", "w") or die("File ($file) does not exist!");
$members=array();
$tags=array();
$i = 0;
while (!feof($fh1))
{
$members[] = fgets($fh1);
}
while (!feof($fh2))
{
$tags[] = fgets($fh2);
}
for($i=0;$i<sizeof($members);$i++)
{
$chk=$members[$i];
//echo $chk;
//fwrite($fh3,$members[$i]);
for($j=0;$j<sizeof($tags);$j++)
{
$n = preg_quote($chk);
if (preg_match_all("/\b$n\b/", $tags[$j]))
//if (preg_match('/'."\b$chk\b".'/', $tags[$j]))
{
fwrite($fh3,$tags[$j]);
}
}
//if(in_array($chk,$tags))echo "success";
}
fclose($fh1);
fclose($fh2);
fclose($fh3);
?>
tp.txt:
“战地3”真是太棒了,所以说了很多 这一系列游戏是迄今为止看到的最好的游戏 战地4号是最好的战场。
处理它的最佳方法是解决它 你很早就注意到这一点很好 他很棒。
tp2.txt:
好
最好
问题: 我想搜索从文件tp.txt中找到的“good”和“best”这个词的所有出现,并显示包含这些词的受尊重的行。在输出中,它提供来自tp.txt的所有行,而不管是否找到匹配。 请有人帮忙。
答案 0 :(得分:0)
试试这段代码:
$text = file('tp.txt', FILE_SKIP_EMPTY_LINES);
$words = file('tp2.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$pattern = implode('|', $words);
foreach ($text as $string) {
if (1 === preg_match("/(?:$pattern)/", $string))
file_put_contents('tp3.txt', $string, FILE_APPEND);
}