【问题标题】:How would I use regex to search a database using PHP?我将如何使用正则表达式来搜索使用 PHP 的数据库?
【发布时间】:2015-09-10 21:05:57
【问题描述】:

我刚刚开始在本地驱动器上使用数据库。我想知道如何使用正则表达式命令来搜索数据库中的数据。

PS:我是初学者,从上周开始我才开始编码。

到目前为止我的代码:

<?php
error_reporting(0);
session_start(oid);
    require 'view/header.php';
?>

<?php

?>

<form action="" method="post">
    <h4>Insert a regex command below</h4>
    Regex: <input type="text" name="regex"/>
    <input type="submit" value="Search"/><br/><br/>
</form>

<?php
    $regex=$_POST["regex"];

    if(!empty("regex")) { 
        if(preg_match($regex, "Hello, my name is Hasan!")) {
            echo "That is correct";
        } else {
            echo "That is incorrect";
        }
    }
?>

<?php
    require 'view/footer.php';
?>

欢迎任何反馈。我正处于学习这个的开始阶段。

【问题讨论】:

  • 我没听懂,你想搜索数据库还是从数据库中得到结果后搜索?
  • MySQL 支持(基本)正则表达式。也就是说,有很多关于使用 PHP 从数据库中获取数据的教程。我强烈建议您清理用户输入,并使用 PDO 或其他一些数据库库来查询您的数据库。
  • @Prashank 我想搜索数据库。数据库中充满了不同的文档,我想使用正则表达式来搜索这些文档并提供输出。目前,用户必须手动输入正则表达式命令。

标签: php mysql sql regex database


【解决方案1】:

您可以在查询中使用REGEXP。查看this 资源,其中包含您需要的所有详细信息。

语法简单如下

$qry = "select * from aTable where someName REGEXP '$pattern'";

【讨论】:

  • 谢谢你的资源和你的评论真的很有帮助!
  • 没问题。如果有帮助,请接受答案:)
【解决方案2】:

由于您使用的是 MySQL,您可以使用 MySQL 的正则表达式支持,其中包括 REGEXPNOT_REGEXP 运算符。以下是来自 MySQL 的一些信息:

MySQL 使用 Henry Spencer 的正则表达式实现,旨在符合 POSIX 1003.2。 MySQL 使用扩展版本来支持在 SQL 语句中使用 REGEXP 运算符执行的模式匹配操作。

更多信息请访问MySQL Reference Manual section on Regular Expressions

【讨论】:

    【解决方案3】:

    您可以先从数据库中返回所有行,然后在 PHP 中过滤所有行。或者您可以使用 MySQL 语法直接过滤查询。这是有关 MySQL 正则表达式的资源 - http://java.dzone.com/articles/mysql-regexp-regular 希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-02
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      • 2011-09-02
      • 1970-01-01
      • 2016-06-18
      相关资源
      最近更新 更多