【问题标题】:Mysql match url against saved regex expressionMysql 将 url 与保存的正则表达式匹配
【发布时间】:2015-12-08 11:49:26
【问题描述】:

我有一个表,我在其中保存了后来我用来检测 url 的正则表达式。

现在我想如果我在搜索字段中输入 url,那么在数据库查询中将获取所有捕获 url 的记录(正则表达式):

例如在数据库中我保存了这个表达式

.*\/[a-z0-9]{0,}\.gif\?abc=[0-9]&rnd=[0-9]{1,}.*

现在如果我搜索这个网址

cnzz.mmstat.com/9.gif?abc=1&rnd=162146281

然后它应该自动获取正则表达式检测到此 url 的记录。

我正在使用 MySql 和 Core PHP

【问题讨论】:

  • Arjun,请看我的回答。让我知道它是否有效?

标签: php mysql regex


【解决方案1】:

您的正则表达式中没有任何捕获组。使用这个:

.*\/[a-z0-9]{0,}\.gif\?abc=[0-9]&rnd=([0-9]{1,}.*)

因此,这将最后一组数字作为捕获组。您可以在Regex101 进行测试。

现在使用preg_match(),您可以获得网址的最后一个id,可用于进行计算。

示例代码

<?php
preg_match('.*\/[a-z0-9]{0,}\.gif\?abc=[0-9]&rnd=([0-9]{1,}.*)',
    "cnzz.mmstat.com/9.gif?abc=1&rnd=162146281", $matches);
$id = $matches[0];

echo "The id is: {$matches[0]}\n";
?>

【讨论】:

  • 感谢您的回复。但我认为你没有理解我的问题。我制作了一个检测 url 的正则表达式,然后将该表达式保存在数据库中。现在,如果我输入一个 url,那么在数据库查询中应该获取所有检测到该特定 url 的表达式
  • @ArjunThakur 哦,伙计,你想在 MySQL 中使用这个正则表达式来获取所有 ID 是吗?
  • @parveen 不,我不想使用正则表达式来获取 ID。该表达式已保存在数据库中。现在我有一个 url,我想获取与 url 匹配的记录(正则表达式)。一种方法是获取所有记录(保存在数据库中的表达式),然后使用 preg_match 我将所有表达式与 URL 匹配但是这个过程需要很多时间,所以我不想使用它
  • @ArjunThakur Er... 不清楚。嗯……你能不能用更好的方式解释一下,或者让我们等一下,慢慢来,其他人可以回答。 :)
猜你喜欢
  • 1970-01-01
  • 2019-03-07
  • 2015-05-30
  • 1970-01-01
  • 2019-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多