$info = array(

"https://segmentfault.com/q/1010000003711515",

"http://www.baidu.com?admin.php&jasdhjas=asjd",

'php $a=0; echo "abc";',

"假如这是第三个....*^%$#@!()[]{}",

);

foreach ($info as $key => $value) {

$message = "https://segmentfault.com/q/1010000003711515";

$preg = "/^".$value."$/";

if (preg_match($preg, $message)) {

echo '匹配成功';

break;

}

}

遍历$info数组,为其每一个字符串前后加上/^,$/ ,变成一个正则表达式,去匹配提供的$message,但是因为$info里面的字符串可能有特殊字符,造成出错,所以请问有没有什么办法把$info的每个字符串转义?

难道只能在定义$info的时候就转义吗?

回复内容:

$info = array(

"https://segmentfault.com/q/1010000003711515",

"http://www.baidu.com?admin.php&jasdhjas=asjd",

'php $a=0; echo "abc";',

"假如这是第三个....*^%$#@!()[]{}",

);

foreach ($info as $key => $value) {

$message = "https://segmentfault.com/q/1010000003711515";

$preg = "/^".$value."$/";

if (preg_match($preg, $message)) {

echo '匹配成功';

break;

}

}

遍历$info数组,为其每一个字符串前后加上/^,$/ ,变成一个正则表达式,去匹配提供的$message,但是因为$info里面的字符串可能有特殊字符,造成出错,所以请问有没有什么办法把$info的每个字符串转义?

难道只能在定义$info的时候就转义吗?

/在正则表达式里面有特殊含义,所以后面的'/'就会出错,你需要在前面加上反斜杠\取消转义。

定义了$preg, 却用的是$info, 这是一个错误

还有就是正则的通配符都是要用 \ 进行转义的,

你上面的例子应该改写成

$preg = "/^https:\/\/segmentfault\.com\/q\/1010000003711515$/";

$test = "https://segmentfault.com/q/1010000003711515";

preg_match($preg, $test);

我觉得你直接说你要干嘛比较好,感觉你思路错了。

$preg 是一个未知的变量

你这个前提太大了

如果这些表达式是程序员录入的,那么是程序员的问题。

如果这些表达式是用户录入的,那么应该在录入界面告知用户此处是正则表达式,让他自己注意。

你可以使用js转义正则表达式的特殊字符,但是可能造成2次转义(比如用户本来就输入已转义的内容http:|b4831e42daf1db770cdbc01d41578e020|/.+)

例子

document.getElementById('test').value = (new RegExp(document.getElementById('test').value)).toString();

此外,你在程序中强行增加/^和$/也可能产生问题。

相关标签:php

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php正则表达式 包含特殊字符,正则表达式 匹配 含有特殊字符相关推荐

  1. 正则表达式-匹配各种特殊字符

    匹配各种特殊字符的正则表达式 ((?=[\x21-\x7e]+)[^A-Za-z0-9])x21-\x7e]+)[^A-Za-z0-9]) 匹配所有键盘上可见的非字母和数字的符号 var patrn ...

  2. php正则表达式 包含特殊字符,php正则表达式的特殊字符含义

    一篇关于正则表达式特殊字符含义的文章,希望对大家有所帮助. 字符/ 意义:对于字符,通常表示按字面意义,指出接着的字符为特殊字符,不作解释. 例如:/b/匹配字符'b',通过在b 前面加一个反斜杠,也 ...

  3. android验证数字字母和特殊字符,正则表达式必须包含字母数字和特殊字符

    正则表达式要实现必须包含字母数字和特殊字符,那么,我们就必须判断该字符串中: 1. 包含字母 2. 包含数字 3. 包含特殊字符 为了简化问题,这里对特殊字符做下限定,指:_-@&=,大家在实 ...

  4. java -正则表达式(是否含有特殊字符,英文或者数字)

    /*** 判断是否含有特殊字符** @param str* @return true为包含,false为不包含*/ public static boolean isSpecialChar(String ...

  5. ES6/05/正则表达式简介,正则表达式如何使用,正则表达式中的特殊字符(边界符,量词符),预定义类,正则表达式中的替换

    正则表达式 目标:1,说出正则表达式的作用 2,能使用一些简单的正则表达式 3,使用正则表达式对表单进行验证 4,使用正则表达式替换内容 正则表达式简介 正则表达式(Regular Expressio ...

  6. java正则表达式替换特殊字符_使用正则表达式替换报表名称中的特殊字符(推荐)...

    正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表通常被用来检索.替换那些符合某个模式(规则)的文 ...

  7. 万物之始正则表达式全解析三部曲(中篇)-正则表达式运算符优先级及匹配规则

    前言 各位小伙伴大家好,接下来几天时间,我会从多个角度对正则表达式进行系统阐述,让你了解正则表达式的前世今生. 该系列文章上篇 万物之始正则表达式全解析三部曲(上篇)-正则表达式基础知识及语法 以下是 ...

  8. 正则表达式 String中正则匹配的方法

    目录 基础 常用的一些 特殊字符 非打印字符 元字符 表达式 量词 或者 创建正则表达式 实例方法 字符串中的正则方法 字符串的 match()方法 字符串的 search() 字符串的 split( ...

  9. 正则表达式、常用的匹配总结

    1.正则表达式:我的理解就是,记录文本规则的代码,我主要运用它在.net表单验证中. 2.学习正则表达是的工具下载链接:https://sourceforge.net/projects/regexte ...

最新文章

  1. Tmux终端复用工具小解
  2. 无法加载 DLL“oramts.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)
  3. fatal error C1083: 无法打开预编译头文件:“Debug\a.pch”:No such file or directory
  4. cmake 判断操作系统平台
  5. Java 获取文件目录最终的修改时间
  6. 线性插值改变图像尺寸_【图像分割模型】实例分割模型—DeepMask
  7. POJ1664 放苹果【递推+记忆化递归】
  8. pytorch中lstm用法详解(二)
  9. 《NLTK基础教程——用NLTK和Python库构建机器学习应用》——2.10 练习
  10. oracle获取日期所在周,ORACLE 获取某一日期所在周的周一
  11. selenium录制百度3D地图
  12. mysql 关键字 desc_mysql数据库表字段使用DESC等关键字报错及解决方法
  13. java中什么是线程不安全给出一个例子
  14. 一个可以把单张静态照片转化成 3D 图片的AI 工具
  15. 手把手教大家在mac上用VMWare虚拟机装Ubuntu
  16. 一文读懂 | Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈
  17. Botnet趋势漏洞利用状况分析
  18. 二次规划算法学习笔记
  19. 儿时经典电影回顾,你看过几部?
  20. 手把手教你在百度aistuio训练人工智能模型

热门文章

  1. 数据挖掘第三章笔记——数据归约
  2. 教你查询大量圆通国际在途信息,并筛选两天未更新的单号
  3. eclipse解决ASCII码转中文的问题
  4. VMWARE下Oracle 11g RAC搭建
  5. pytorch学习率下降策略
  6. 从宏观的角度讨论网络应用怎么运行及其前端代码系统编写和优化
  7. 2023年多领域控股行业研究报告
  8. 龟背立交取消“禁左”
  9. 2022年报名PMI-ACP考试,只需满足两个条件
  10. 对象存储 S3 在分布式文件系统中的应用