php - Mysql 查找末尾有多余字符的词/句 PHP

标签 php mysql regex pattern-matching

目前我有一个搜索句子/单词的查询,它几乎按预期工作,

我有一个在表中搜索名称的正则表达式,例如:

function getNames($str){
    $stmt = "SELECT * FROM users WHERE name = :name 
                                    OR name REGEXP :reg1 
                                    OR name REGEXP :reg2
                                    OR name LIKE :lik1";
    $query = self::$connection->prepare($stmt);
    $query->execute(array(":name"=>$str,
                          ":reg1"=>"^$str" . "[a-zA-Z\s]*$",
                          ":reg2"=>"^[a-zA-Z]*[\s]*[$str][a-zA-Z]"  
                          ":lik1"=>"%" . $str . "%"      
    ));
   return $query->fetchAll(PDO::FETCH_ASSOC);
}

假设我的表包含以下值

  • 鲍勃
  • 彼得
  • 马克
  • 大卫
  • 约翰

如果我使用 Bob 作为 $name 值运行我的查询,它会得到它,但我希望能够找到 Bob 当我使用 BobsomeLettersExtraBob something 作为 $name 值运行查询 有没有办法使用 REGEXP 或 LIKE 来做到这一点?

最佳答案

SELECT * FROM users WHERE  name LIKE '%".$name."%'

上面的查询应该足以得到结果。您应该在向表中输入数据之前验证数据,否则请使用正则表达式

"SELECT * FROM users WHERE name LIKE '%".$name."%' AND REGEXP ^".$name."[a-zA-Z]*$"

更新

对不起,如果我误解了这个问题,请试试这个

"Select * from users  WHERE '".$name."' LIKE CONCAT(name , '%')" 

关于php - Mysql 查找末尾有多余字符的词/句 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44963061/

相关文章:

PHP 和数据库

PHP 和 MySQL : Dynamic position/order update

javascript - Rhino:如何让Rhino计算Java字符串上的RegEx表达式?

regex - 查找模式并提取字符串

PHP 在不创建文件的情况下处理 blob

php - 如何用php和Codeigniter存储搜索条件?

php - 如何将 MYSQL 结果与 PHP 合并以获得漂亮的表格

PHP分页和排序

python - 如何从该列中仅提取数字?

javascript - 如何在数据内容属性中换行?