在PHP中使用正则表达式模式尝试与URL匹配时遇到一些问题.

我的正则表达式:

/ article /([[0-9A-Za-z -_]] / post /([0-9A-Za-z-_])

public function matches(Route $route){

$uri = filter_var(strip_tags($_SERVER['REQUEST_URI']), FILTER_SANITIZE_URL);

if (preg_match('#' . "/article/([0-9A-Za-z]++)/post/([0-9A-Za-z-_]++)" . '#i', $uri, $this->matches)) {

return true;

}

return false;

}

示例1:有效匹配(良好)

/article/AB545455DSAF54FSA45S4F4/post/FGFG-FGFGF-5FG54FGF-FGFGFG

但也匹配这个(坏):

/article/AB545455DSAF54FSA45S4F4/post/FGFG-FGFGF-5FG54FGF-FGFGFG/fgfg/fgfgfg/fgf

我只想匹配第一个示例,那么我该如何解决?谢谢

解决方法:

向您的正则表达式添加终止锚:

/article/([0-9A-Za-z]+)/post/([0-9A-Za-z-_]+)$

^^^

锚点将确保在最终组件之后不会出现更多子目录.

public function matches(Route $route){

$uri = filter_var(strip_tags($_SERVER['REQUEST_URI']), FILTER_SANITIZE_URL);

if (preg_match('~/article/[0-9A-Za-z]+/post/[0-9A-Za-z_-]+$~", $this->matches)) {

return true;

}

return false;

}

请注意,一次或多次匹配正则表达式中的某项将使用一个加号,而不是两个加号.

我可能在这里没有确切的代码,但是我建议的模式在下面的演示中似乎可以使用.

Demo

标签:preg-match-all,preg-match,php,regex,routing

来源: https://codeday.me/bug/20191025/1928431.html

php完全匹配,如何在PHP中使用正则表达式找到完全匹配的内容?相关推荐

  1. 如何在JS中应用正则表达式

    背景:在之前的随笔中写过C#中如何使用正则表达式,这篇随笔主要讲如何在js中应用正则表达式 如下代码: 1 $("#zhengze").click(function () { 2 ...

  2. js 正则表达式奇偶字符串替换_Python中的正则表达式及其常用匹配函数用法简介...

    今 日 鸡 汤 此曲只应天上有,人间难得几回闻. /1 前言/ 这次给大家主要是介绍Python中的正则表达式,及其相关函数的基本使用方法,并且捎带一些正则表达式给我们带来的便利. /2 简介/ Py ...

  3. awk 使用正则表达式_如何在awk中使用正则表达式

    awk 使用正则表达式 在awk中,正则表达式(regex)允许动态和复杂的模式定义. 您不仅限于搜索简单的字符串,而且还搜索模式中的模式. 使用正则表达式匹配awk中的行的语法为: word ~ / ...

  4. php查询替换_如何在PHP中使用正则表达式进行查找替换

    1. preg_match - 执行一个正则表达式匹配int preg_match ( string $pattern , string $subject [, array &$matches ...

  5. java中正则匹配字符串长度_Java中使用正则表达式校验字符串

    Java中使用正则表达式校验字符串 正则表达式是某一位伟大的数学家发明的,现在已经形成了一个ISO标准,这个标准和编程语言没有关系.至于具体谁发明的,怎么发明的,我也忘记了:). 正则表达式简单理解就 ...

  6. java正则表达式所有字符串_如何在Java中使用正则表达式打印字符串的所有字符?...

    元字符"." 匹配所有字符,以使用正则表达式打印所有字符-使用compile()方法编译正则表达式. 使用matcher()方法创建Matcher对象. 使用find()方法找到匹 ...

  7. 如何在python中使用正则表达式从多行字符串中删除特定字符

    我有一个如下所示的多行字符串: st = '''emp:firstinfo\n:secondinfo\nthirdinfo''' print(st) 我正在尝试做的是从我的字符串中跳过第二个':',并 ...

  8. 如何在Java中使用正则表达式?

    正则表达式是用于文本搜索的非常重要的工具. 以下是用于执行正则表达式搜索并基于正则表达式捕获字符串的不同部分的代码段 public class RegexTest { public static vo ...

  9. 如何在VB中使用正则表达式

    1. 启动 Microsoft Visual Basic 6.0. 2. 在"文件"菜单上,单击"新建项目". 3. 在"新建项目"对话框中 ...

最新文章

  1. 烂泥:vcenter5.5无AD下的安装与配置
  2. 关于ogrebullet中角色的控制
  3. 万网稳居国内域名主机网站榜首 西部数码第二
  4. 华为鸿蒙ai字幕,EMUI11一个值得吹爆的功能?AI字幕,支持翻译英日韩
  5. 节后的第一个周末,来领取一个Ipad吧!真香!
  6. C++primer 第 5 章语句 5.2语句作用域 5.3条件语句 5 . 4 迭代语句 5.5跳转语句 5.6 try语句块和异常处理
  7. Android中的动画有哪几类?各自的特点和区别是什么?
  8. confluence迁移后文件打不开_confluence和jira重启动后confluence启动报错,打不开网页...
  9. java stream intermediateterminal方法
  10. Vim-latex 插件 的安装
  11. 计算机信息数据集通信的概念,南京信息工程大学数据通信与计算机网络复习题库.doc...
  12. 智慧校园建设方案!高校统一数据中心解决方案
  13. 关于极化码Polar code的笔记
  14. 汽车仪表指示灯详细介绍
  15. 最大值减最小值等于区间长度_一文帮你弄清楚电压和电流的有效值、瞬时值、平均值、最大值及其关系...
  16. 【目标检测适用】Pascal Voc(07+12)联合训练并在07上测试
  17. 【linux】按键盘Backspace键终端出现^H
  18. android监听卡1电话,Android 监听 SIM 卡状态
  19. 蓝桥杯国赛2017瓷砖样式
  20. vue 3.0学习1

热门文章

  1. 面对数据缺失,如何选择合适的机器学习模型?
  2. HTTP请求解析过程 (简单概括)
  3. $.ajax和$.post的区别(前者根据key-value/后者根据形参)
  4. C语言 百炼成钢16
  5. c++的set_unexpected不起作用
  6. IOS6.0与IOS7.0屏幕适配
  7. Docker应用基础
  8. MDT2010-windows 7镜像捕获与模板镜像部署(二)(特别版)
  9. 微软Skype推出Slack整合预览版
  10. 零点起飞学Visual C++