您好我想使用preg_match_all搜索表单。
为什么需要它?
我有DB有两个字段' id'和'文字'。我必须使用..a...
,a..a..
等规则从此数据库中搜索某些文字。
我尝试了很多方法,我是关于php和编程的新手,这就是我无法解决这个问题的原因。请帮我解决一下。
我的代码如下。
我有HTML表单,它有一个名为' subject'的输入字段。和一个按钮。
当我向输入字段写入内容时,a...a..
数组必须如下所示。
例如,我有单词存储在DB:
我想使用以下掩码进行搜索:ap....
/结果必须为:apple
,apricots
或者:.....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);
答案 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);
}