gpt4 book ai didi

php - 从正则表达式得到错误 'repetition-operator operand invalid'

转载 作者:行者123 更新时间:2023-11-29 08:54:05 41 4
gpt4 key购买 nike

我有一个 PHP/mySQL 搜索脚本,由于某种原因,在开发人员最新更新后,在使用通配符 (*) 搜索时已停止工作。更糟糕的是,它不仅停止工作,而且还返回以下令人讨厌的(对于访问者)mySQL 错误,该错误基于 donut 通配符搜索:

SELECT a.product_id, a.category_id FROM products a
LEFT JOIN users u ON u.userid=a.ownerid
WHERE a.active=1 AND a.approved=1 AND a.deleted=0 AND a.creation_in_progress=0
AND a.name LIKE '%%'
AND ((a.name REGEXP '( )*(*donut*)( )*') OR (a.description REGEXP '( )*(*donut*)( )*'))

错误:

Mysql Error: Got error 'repetition-operator operand invalid' from regexp

不幸的是,开发人员无法(或不会)修复它,如果有人进行通配符搜索,它会使我的网站变得毫无用处。

有什么想法可能是什么问题吗?或者一个简单的解决办法?我已经尝试在 $keywords_search 之前添加反斜杠,但这不起作用。我还尝试直接在 PhpMyAdmin 中运行上述 mySQL 查询,但它产生了相同的错误。

我还尝试完全摆脱 REGEXP 部分,但它根本不会返回任何结果。

该部分的PHP搜索代码如下:

$query[] = "((a.name REGEXP '( )*(" . str_replace(' ', ')*( )*(', $keywords_search) . ")( )*') 
OR (a.description REGEXP '( )*(" . str_replace(' ', ')*( )*(', $keywords_search) . ")( )*'))";

最佳答案

如果您希望它与字面星号匹配,则需要转义星号 (*)。如果你想让它翻译“任何字符串”,你需要将其更改为.*。就是这么简单。只需在查询数据库之前获取用户的输入并应用替换即可。

关于php - 从正则表达式得到错误 'repetition-operator operand invalid',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10435029/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com