如何使用PHP中的preg_match和数组来检查搜索到的单词的存在位置

时间:2018-01-12 10:01:36

标签: php preg-match

我有一个PHP代码,用于读取文本文件并允许用户进行搜索,然后将结果显示在包含文件名行号的html表中文件可以处理多行。

所有由10个类别组成的txt文件,其中每个类别包含一些文本。

enter image description here

数组将包含所有txt文件由其组成的类别所以我认为为了检查搜索到的单词存在的位置,并且因为类别是标准而且不改变,因此我使用数组txt文件内容是搜索的单词(如果存在)+数组元素+其他文本。

预期结果:

enter image description here

我知道我必须在数组中包含这些类别,而系统读取时会读取与数组元素进行比较的文件,一旦找到匹配项,它会在行旁边显示类别名称号。

我不知道如何在PHP中写这个想法有人可以帮助我吗?

的代码:

    <?php

    $result = [];
    if(isset($_POST["search"]))
    {
        $search =$_POST['name'];
        echo "the word  $search exist: <br><br>";
        foreach(glob($_SERVER['DOCUMENT_ROOT']."/readfiletest/*.txt") as $txts)
        {
            $categories = ["محلي", "إقليمي","دولي"];
            $line = 1;
            $temp   = [];
            $myFileLink = fopen($txts, 'r');
            while(!feof($myFileLink))
            {
                $myFileContents = fgets($myFileLink);
                if( preg_match_all('/('.preg_quote($search,'/').')/i', $myFileContents, $matches))
                {

                    if(preg_match('/'.preg_quote($categories[0], '/'). '/u', $myFileContents))
                    {
                        echo "the category found is $categories[0]"; 
                    }
                }
                ++$line;
            }
            fclose($myFileLink);
    }
?>

0 个答案:

没有答案