我正在开发一个搜索功能来获取用户输入并搜索一个mysql字段.这个想法是分割用户搜索的单词并查找相关字段中的每个术语.
用于构建我正在使用的正则表达式的代码是从一个工作的纯PHP脚本复制的(正则表达式似乎与PHP一起使用,所以我怀疑它是正则表达式的区别)
请原谅我,如果这是一个明显的问题,仍然感觉到正则表达式.
首先,我将向您展示我运行的查询以及我得到的错误
"SELECT * from `images` WHERE ( `name` REGEXP '^(?=.*gallardo).*$' OR `meta` REGEXP '^(?=.*gallardo).*$' ) ORDER BY `changestamp` DESC
Run Code Online (Sandbox Code Playgroud)
从regexp获得错误'重复 - 运算符操作数无效'
SELECT * from `images` WHERE ( `name` REGEXP '^(?=.*gallardo)(?=.*lambo).*$' OR `meta` REGEXP '^(?=.*gallardo)(?=.*lambo).*$' ) ORDER BY `changestamp` DESC
Run Code Online (Sandbox Code Playgroud)
给出了同样的错误
编译这个正则表达式,我接受用户提交的输入,如"gallardo lambo"并运行此PHP程序
if(isset($_GET['keyword'])){
$searchterms = explode(' ',$_GET['keyword']);
$regstr = '^';
foreach($searchterms as $i => $v)
{
if($v)
$regstr .= '(?=.*'.preg_replace('/[-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/', "\\$&", $v).')';
}
$regstr .= '.*$';
}
Run Code Online (Sandbox Code Playgroud)
然后我把它放在查询中
"( `name` REGEXP '$regstr' OR `meta` REGEXP '$regstr' )"
Run Code Online (Sandbox Code Playgroud)
当我使用这个方法与PHP的时候preg_match(),它似乎工作.
任何见解?随意告诉我,我不知道我在做什么.
谢谢!
| 归档时间: |
|
| 查看次数: |
897 次 |
| 最近记录: |