preg_match_all来自数组php和输入表单

时间:2017-01-27 06:08:00

标签: php arrays search input preg-match-all

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

  1. 苹果
  2. 杏子
  3. 鳄梨
  4. 香蕉
  5. 蓝莓
  6. 黑莓
  7. 我想使用以下掩码进行搜索:ap.... /结果必须为:appleapricots 或者:.....berri... /结果:blueberriesblackberries

            $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);
    

3 个答案:

答案 0 :(得分:2)

如果蒙版中的点代表任意符号,则您已经掌握了正则表达式。因此,您可以使用它们在您的数据库中进行搜索:

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

当然,您应该按照前面提到的方式准备用户提供的字符串。

答案 1 :(得分:1)

而不是取不必要的结果。您也可以使用查询

执行此操作
"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);

答案 2 :(得分:0)

此问题已解决。感谢所有试图帮助我的人。特别是@ 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);
    }