preg_match_all 来自数组 php 和输入表单

preg_match_all from array php and input form

您好,我想使用 preg_match_all 搜索表单。 为什么需要? 我的数据库有两个字段 'id' 和 'text'。我必须使用 ..a...a..a.. 等规则从此数据库中搜索一些文本。 我尝试了很多方法,我是 php 和编程的新手,这就是我无法解决这个问题的原因。请帮我解决。 我的代码如下。 我有一个 HTML 表单,其中有一个名为 'subject' 的输入字段和一个按钮。 当我写一些东西到输入字段时,像 a...a.. 数组必须显示在下面。 例如,我在数据库中存储了单词:

  1. 苹果
  2. 杏子
  3. 鳄梨
  4. 香蕉
  5. 蓝莓
  6. 黑莓

我想使用如下掩码进行搜索:ap.... / 结果必须是:appleapricots 或者:.....berri... / 结果:blueberries, blackberries

        $infotext = $_GET['subject']; //this is string from input form
        $query = "SELECT * FROM baza LIMIT 100";
        $result = mysqli_query($conn, $query);
         while( $row = mysqli_fetch_assoc($result))
         {
             $search = preg_match_all("/$infotext/", $row['text']); }
             mysqli_free_result($result);

        print_r($search);

而不是获取不必要的结果。您也可以使用查询来做到这一点

"SELECT * FROM baza WHERE text LIKE '%'.$infotext.'%' LIMIT 100". 

(使用准备好的语句来防止 sql 注入。)

然后你可以在数组中得到这个结果。

 while( $row = mysqli_fetch_assoc($result))
  {
       $search[] =  $row['text']; 
  }
  mysqli_free_result($result);

  print_r($search);

如果掩码中的一个点代表任意符号,那么您已经有了一个正则表达式。因此,您可以使用它们在您的数据库中进行搜索:

"SELECT * FROM baza WHERE text REGEXP '$infotext' LIMIT 100"

当然你应该像前面提到的那样准备好用户提供的字符串。

这个问题已经解决了。感谢所有试图帮助我的人。特别是@andreys-scherbakov。 解决的代码是。

    $query = "SELECT * FROM baza WHERE text REGEXP '$infotext'";
    $result = mysqli_query($link, $query);

    if ($result = mysqli_query($link, $query)) {
        while ($row = mysqli_fetch_assoc($result)) {
            print_r($row['text'].'<br/>');
        }
        mysqli_free_result($result);
    }