用于将单词搜索到文本文件并显示内容的PHP代码

时间:2014-01-31 10:13:39

标签: php design-patterns matching

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的所有行,而不管是否找到匹配。 请有人帮忙。

1 个答案:

答案 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);
}