如何在php中连续搜索一个字符串?我写了这段代码:
$filterQuery .=' LIKE %' . $db->Quote(JString::strtolower($filter) . '%');
Run Code Online (Sandbox Code Playgroud)
它适用于mysql搜索字符串:LIKE'%stringtosearch%'
为什么它不能在PHP中工作?
如前所述,您忘记了%...%零件周围的引号.但是,MySQL默认情况下不区分大小写,因此JString除非您专门将MySQL服务器配置为区分大小写,否则您可以删除该调用.然后可以将替代用法简化为:
$filterQuery .=' LIKE ' . $db->quote('%' . $filter . '%');
Run Code Online (Sandbox Code Playgroud)
但请注意,如果使用用户输入,则SQL通配符可能会导致DOS攻击(用户可能在过滤器字符串中包含添加的%和_字符).为了防止这种情况,您可以使用以下格式:
$filterQuery .=' LIKE ' . $db->quote('%' . $db->escape($filter, true) . '%');
Run Code Online (Sandbox Code Playgroud)
这将逃避过滤器本身(并允许您搜索真正的下划线或%字符).这就是核心代码处理这种情况的方式,如下所示:
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |