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..
数组必须显示在下面。
例如,我在数据库中存储了单词:
- 苹果
- 杏子
- 鳄梨
- 香蕉
- 蓝莓
- 黑莓
我想使用如下掩码进行搜索: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);
而不是获取不必要的结果。您也可以使用查询来做到这一点
"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);
}
您好,我想使用 preg_match_all 搜索表单。
为什么需要?
我的数据库有两个字段 'id' 和 'text'。我必须使用 ..a...
、a..a..
等规则从此数据库中搜索一些文本。
我尝试了很多方法,我是 php 和编程的新手,这就是我无法解决这个问题的原因。请帮我解决。
我的代码如下。
我有一个 HTML 表单,其中有一个名为 'subject' 的输入字段和一个按钮。
当我写一些东西到输入字段时,像 a...a..
数组必须显示在下面。
例如,我在数据库中存储了单词:
- 苹果
- 杏子
- 鳄梨
- 香蕉
- 蓝莓
- 黑莓
我想使用如下掩码进行搜索: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);
而不是获取不必要的结果。您也可以使用查询来做到这一点
"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);
}