gpt4 book ai didi

php - MySQL Like 值中的正则表达式

转载 作者:行者123 更新时间:2023-11-29 14:37:13 28 4
gpt4 key购买 nike

再次注册前。

尝试运行类似的 SQL 查询:

mysql_query("SELECT * From tablename WHERE somthing LIKE '%id|length:3:\"{$id}\"%'");

问题是长度值未知,只有 ID。

当然,我可以使用 strlen($id) 并执行以下操作:

$len = intval(strlen($id));
mysql_query("SELECT * From tablename WHERE somthing LIKE '%id|length:{$len}:\"{$id}\"%'");

但我真的不关心检查 len 值,必须有一些 Reg ex 来匹配长度的任何内容,并对它进行排序,而不必事先计算长度。

mysql_query("SELECT * From tablename WHERE somthing LIKE '%id|length:^*:\"{$id}\"%'");

想法?

最佳答案

@Naddiseo 的链接很好,我建议您使用 REGEXP。 “没有确切的示例匹配”是什么意思?

尝试类似的操作(为了便于阅读,我添加了换行符):

mysql_query("SELECT * From tablename 
WHERE somthing
REGEXP '^.*id\\\|length:[0-9]+:\"{$id}\".*$'");

无需担心 MYSQL/php 字符串转义的相关正则表达式是

^.*id\|length:[0-9]+:"abc".*$

(假设 abc 是特定的 ${id})。

它说,“查找紧随文字字符串id|length:的任何内容(我已经转义了它,因为|有一个正则表达式中的特殊含义,您需要文字 |),后跟数字 ([0-9]+) 作为 id 的长度,后跟 :"{$id}" 以及其他任何内容(其中 {$id} 已被替换)。

现在,如果您阅读 MySQL regexp page @Naddiseo 引用的,你会发现任何反斜杠都需要进一步转义,因为 MySQL 将反斜杠解析为特殊字符。

因此,如果您要在 MySQL 命令行中输入此查询(暂时假设 {$id}abc),您必须输入:

SELECT * From tablename 
WHERE somthing
REGEXP '^.*id\\|length:[0-9]+:"abc".*$'

现在,由于您是在双引号内从 PHP 调用此函数,因此您需要再次转义反斜杠,以确保正确的数字能够到达 MySQL,以及反斜杠双引号以转义他们。因此,上面的 mysql_query 中的 | 之前有三个反斜杠。

关于php - MySQL Like 值中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8783981/

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