首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用PHP preg_replace匹配会导致数学运算吗?

使用PHP的preg_replace函数进行匹配不会导致数学运算。preg_replace函数是PHP中的正则表达式替换函数,用于在字符串中进行模式匹配并替换。它的作用是根据指定的正则表达式模式,在字符串中找到匹配的部分,并进行替换操作。

preg_replace函数的语法如下: preg_replace(pattern, replacement, subject)

其中,pattern是正则表达式模式,replacement是替换的内容,subject是要进行匹配和替换的字符串。

该函数的主要作用是将匹配到的部分替换为指定的内容,而不会进行数学运算。如果在replacement参数中包含数学运算的表达式,PHP会将其视为普通的字符串进行替换,而不会进行计算。

因此,使用PHP的preg_replace函数进行匹配不会导致数学运算。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

面试官:使用无界队列的线程池导致内存飙升

LinkedBlockingQueue()); } newFixedThreadPool和SingleThreadExecutor类似,唯一的区别就是核心线程数不同,并且由于使用的是...LinkedBlockingQueue默认的最大任务数量是Integer.MAX_VALUE,非常大,可以理解为无限大吧;但是存在这种情况,当每个线程获取到一个任务后,执行时间比较长,导致workQueue...里积压的任务越来越多,机器的内存使用不停的飙升,最后也导致OOM。...一个由数组结构组成的有界阻塞队列 LinkedBlockingQueue:一个由链表结构组成的有界阻塞队列 PriorityBlockingQueue:一个支持优先级排序的无界阻塞队列 DelayQueue:一个使用优先级队列实现的无界阻塞队列

74210
  • 看代码学安全(8 )preg_replace函数之命令执行

    preg_replace 函数使用 /e 模式,导致代码执行的问题。...时间上,这里涉及到正则表达式反向引用的知识,即此处的 \\1 ,大家可以参考 W3Cschool 上的解释: 反向引用 对一个正则表达式模式或部分模式 两边添加圆括号 将导致相关 匹配存储到一个临时缓冲区中...实例分析 本次实例分析,我们选取的是 CmsEasy 5.5 版本,漏洞入口文件为 /lib/tool/form.php ,我们可以看到下图第7行处引用了preg_replace ,且使用了 /e 模式...如果 $form[$name]['default'] 的内容被正则匹配到,就会执行 eval 函数,导致代码执行。具体代码如下: ? 我们再来看看这个 getform() 函数在何处被引用。...修复方案 漏洞是 preg_replace() 存在 /e 模式修正符,如果正则匹配成功,造成代码执行漏洞,因此为了避免这样的问题,我们避免使用 /e 模式修正符,如下图第7行: ?

    2.2K30

    PHP中正则表达式学习及应用

    匹配前一个内容的0次或1次 | 选择匹配类似PHP中的| (因为这个运算符合是弱类型导致前面最为整体匹配) ^ 匹配字符串首部内容 $ 匹配字符串尾部内容 \b 匹配单词边界,边界可以是空格或者特殊符合...\B 匹配除带单词边界意外内容 {m} 匹配前一个内容的重复次数为M次 {m,} 匹配前一个内容的重复次数大于等于M次 {m,n} 匹配前一个内容的重复次数M次到N次 ( ) 合并整体匹配,...并放入内存,可使用\1 \2…依次获取 按照运算顺序计算匹配 ( ) 圆括号因为是内存处理所以最高 * ?...匹配的时候 x 忽略正则中的空白 A 强制从头开始匹配 D 强制$匹配尾部无任何内容 \n U 禁止贪婪匹配 只跟踪到最近的一个匹配符并结束, 常用在采集程序上的正则表达式 preg_match_all...,分析文本 preg_replace 正则替换函数 preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit

    1K80

    php写入配置文件的经典漏洞

    方法一,利用换行符来绕过正则匹配的问题 可以看到正则匹配的是以下内容: $option='任意内容' 任意内容里面是可以包含转移符 \ 的,所以我们利用下面的方法: http://127.0.0.1/index.php....* 匹配行内的任意字符无数次.所以 \ 也被认为是其中的一部分,也会被替换掉,执行完之后,config.php中的内容为: <?...preg_replace变成了一个,导致单引号逃脱....方法三, 利用 preg_replace() 函数的第二个参数的问题 先看官方对preg_replace()函数的描述manual 函数原型: mixed preg_replace ( mixed $pattern...每个 这样的引用将被匹配到的第n个捕获子组捕获到的文本替换。 n 可以是0-99,\\0和0代表完整的模式匹配文本。 所以我们可以用: http://127.0.0.1/test/ph.php?

    2.6K20

    十分钟学会正则表达式

    构造简单,使用"回溯算法",支持大多数的正则语法,是目前使用最广泛的正则引擎,大多数计算机语言例如Java、PHP、Ruby、Python等都是使用的NFA正则引擎。...替换字符串或数组 preg_replace($pattern, $replacement, $subject) 返回匹配过滤后的字符串或者数组。... | : -"进行转义,转义成非正则表达式的运算符,否则正则表达式认为其为运算符。...这是最常用的方式,在PHP中,推荐使用这种方式。 井号。例如#[0-9]。 大括号。例如{[0-9]}。在正则表达式中,大括号还有其他作用,所以这种方式不推荐使用。...(替换字符串要符合php的语法规范) 例如:echo preg_replace('/(\d+),(\d+)/e', '$1+$2', '2,3');输出5。

    84650

    代码审计Day8 - preg_replace函数之命令执行

    当做php代码来执行 漏洞解析 这道题目考察的是 preg_replace 函数使用 /e 模式,导致代码执行的问题。...时间上,这里涉及到正则表达式反向引用的知识,即此处的 \\1 ,大家可以参考 W3Cschool 上的解释: 反向引用 对一个正则表达式模式或部分模式 两边添加圆括号 将导致相关 匹配存储到一个临时缓冲区...5.5 版本,漏洞入口文件为 /lib/tool/form.php ,我们可以看到下图第7行处引用了preg_replace ,且使用了 /e 模式。...如果 $form[$name]['default'] 的内容被正则匹配到,就会执行 eval 函数,导致代码执行。具体代码如下: 我们再来看看这个 getform() 函数在何处被引用。...(phpinfo())} 修复方案 漏洞是 preg_replace() 存在 /e 模式修正符,如果正则匹配成功,造成代码执行漏洞,因此为了避免这样的问题,我们避免使用 /e 模式修正符,如下图第

    94720

    Github-ThinkPHP 2.X 任意代码执行

    1.漏洞描述: 版本: ThinkPHP ThinkPHP 2.x 使用 preg_replace 的 /e 模式匹配路由: $res = preg_replace('@(\w+)'....$depr.'\/]+)@e', '$var[\'\\1\']="\\2";', implode($depr,$paths)); 导致用户的输入参数被插入双引号中执行,造成任意代码执行漏洞。...所以先来看看preg_replace这个函数,这个函数是个替换函数,而且支持正则,使用方式如下: preg_replace('正则规则','替换字符','目标字符') 这个函数的3个参数,结合起来的意思是...下面是搜索到的关于/e的解释: e 配合函数preg_replace()使用, 可以把匹配来的字符串当作正则表达式执行; /e 可执行模式,此为PHP专有参数,例如preg_replace函数。...PHP在线沙箱 测试一下这个preg_replace()函数,代码如下: <?

    89680

    PHP小课堂】PHP中PRGE正则函数的学习

    如果将最后一个参数设置为 PREG_SET_ORDER ,那么数据以分组的形式展示,一级数组中就是每一个匹配到的内容,二级数组的 0 下标就是这个完全的文本内容,而后面的数据就是对应于这个完全匹配内容的括号内部匹配数据...,而 preg_replace() 如果字符中没有匹配到结果,也返回原始的内容。...在这段测试代码中,我们使用了数组作为替换的前三个参数,它们的匹配规则是 pattern 对应 replace 的一个一个去匹配。...没错,在一个函数中进行两种正则模式的匹配。是不是感觉很高大上。这个函数的使用场景就不多了,而且需要注意的是,如果第一条正则匹配到数据了,第二条正则就不会有匹配的结果了,这个大家可以自己测试一下。...不好的正则可能产生严重的回溯导致性能的急剧下降,所以在做业务开发的时候,能不用正则其实还是尽量不要用的。

    13410

    正则表达式教程

    ---- 支持 在最近的六十年中,正则表达式逐渐从模糊而深奥的数学概念,发展成为在计算机各类工具和软件包应用中的主要功能。...通配符? 如果要找到所有pdf文件,就在文件管理器中输入*.pdf即可。...分组使用括号标记出本次匹配需要提取的数据,并且将匹配成功的数据返回给程序供其使用。...> 结果好像不是我们想要的,看来分组命名在PHP的正则替换里没有作用,以后使用的时候一定要注意! 断言 断言的意思就是预先判断匹配字符的位置,以达到更精确的匹配。...简单一行规则就包含了十分复杂的逻辑和运算,确实快赶上一门程序语言了,如果你能够掌握他,那么他极高的提高你的工作效率。

    2.5K20

    一文了解PHP的各类漏洞和绕过姿势

    它是PHP中一个超级全局变量,我们可以在PHP 程序的任何地方直接访问它 二、弱类型以及各种函数 1、精度缺陷 在用PHP进行浮点数的运算中,经常会出现一些和预期结果不一样的值,这是由于浮点数的精度有限...尽管取决于系统,PHP 通常使用 IEEE 754 双精度格式,则由于取整而导致的最大相对误差为 1.11e-16 非基本数学运算可能会给出更大误差,并且要考虑到进行复合运算时的误差传递 下面看一个有趣的例子感受下...> 10、ereg()和eregi() 用于正则匹配,两者的区别在于是否区分大小写 使用指定的模式搜索一个字符串中指定的字符串,如果匹配成功则返回true,否则返回false 该函数可被%00截断来Bypass...> 17、$$导致的变量覆盖 \$var是一个正常变量,名称为:var,存储任何值,如:string,integer,float等 \\var是一个引用变量,用于存储\ 例子使用foreach来遍历数组中的值...,这也是导致反序列化漏洞的根源 比如说是php_serialize的存储方式,那么我们可以通过构造一个上传表单,同时POST一个与INI中设置的session.upload_progress.name

    4.3K60

    正则表达式教程

    ---- 支持 在最近的六十年中,正则表达式逐渐从模糊而深奥的数学概念,发展成为在计算机各类工具和软件包应用中的主要功能。...通配符? 如果要找到所有pdf文件,就在文件管理器中输入*.pdf即可。...分组使用括号标记出本次匹配需要提取的数据,并且将匹配成功的数据返回给程序供其使用。...> 结果好像不是我们想要的,看来分组命名在PHP的正则替换里没有作用,以后使用的时候一定要注意! 断言 断言的意思就是预先判断匹配字符的位置,以达到更精确的匹配。...简单一行规则就包含了十分复杂的逻辑和运算,确实快赶上一门程序语言了,如果你能够掌握他,那么他极高的提高你的工作效率。

    1.9K30

    PHP正则中的捕获组与非捕获组

    今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可行的...PHP会为它编号,从1开始。至于为什么从1开始,那是因为PHP匹配到的完整字符串编号为0。 如果有多个括号或嵌套括号,按左边括号出现的顺序来进行编号,如图: ?...按图中的匹配模式匹配时,捕获组的123号分别是红绿蓝。 捕获组的忽略与命名 我们还可以阻止PHP匹配组的编号:在匹配组中模式前加  ?: $mode = '/a=(\d+)b=(?...捕获组的反向引用 我们在用preg_replace()函数进行正则替换时,我们还可以使用 \n 或 $n 来引用第n个捕获组....那是因为它们有捕获组的特性,在匹配模式的()中,但是匹配时,PHP不会为它们编组,它们只会影响匹配结果,并不作为结果输出。 /d(?=xxx)    匹配"后面是xxx的一个数字"。

    2K90

    正则表达式详解

    匹配 |,请使用 \|。   构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与操作符将小的表达式结合在一起来创建更大的表达式。...修正符中的空格和换行被忽略,其它字符导致错误。 i (PCRE_CASELESS)   如果设定此修正符,模式中的字符将同时匹配大小写字母。...只有 preg_replace() 使用此修正符,其它 PCRE 函数将忽略之。   注: 本修正符在 PHP3 中不可用。...各种操作符的运算优先级    相同优先级的从左到右进行运算,不同优先级的运算先高后低。各种操作符的优先级从高到低如下:   操作符 描述 \ 转义符 (), (?:), (?...PERL兼容正则中可能使用的修正符(修正符中的空格和换行被忽略,其它字符导致错误): i (PCRE_CASELESS): 匹配时忽略大小写。

    1.4K10

    php使用正则表达式实现替换的方法

    了解php使用正则表达式实现替换的方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!...PHP正则替换preg_replace函数的使用 <?...也可以看到,匹配的字符串必须加 / /(看例子的第一个参数) <?php $str="acsdcsscsdcd"; echo preg_replace("/<....上最大的替换次数,默认是-1(无限次) $count 返回在目标字符串所替换的次数 在repalce与pattern中有几点要注意的 1.pattern是数组,replace也是字符串,那么所有模式都使用这个字符串来匹配...4.对于上面例子中出现的${1},${2},${3},这个叫做包含后向引用,里面的数字代表原子出现的位数,有两种写法,一种是\n,一种是${n},推荐使用第二种写法.会把目标字符串匹配到的pattern

    2.1K30

    Thinkphp漏洞复现总结

    preg_replace的/e模式匹配路由: $res = preg_replace('@(\w+)'....preg_replace这个函数使用方法如下: preg_replace('正则规则','替换字符','目标字符') 这个函数的3个参数,结合起来的意思是:如果目标字符存在符合正则规则的字符,那么就替换为替换字符...关于/e的解释: e 配合函数preg_replace()使用, 可以把匹配来的字符串当作正则表达式执行;   /e 可执行模式,此为PHP专有参数,例如preg_replace函数。...可以使用在线php沙箱测试php版本是否支持/e修饰符 沙箱地址:http://sandbox.onlinephpfunctions.com/ preg_replace这个函数5.2~5.6都还是可以执行的...即默认情况下)可以执行任意方法,从而导致远程命令执行漏洞。

    2.7K40

    PHP代码审计笔记

    temp=4e11输出4 addslashes() 使用反斜线引用字符串 在单引号 双引号 反斜线 与NUl 前面加上反斜线 preg_replace() /e PHP5.5.0以下可用,5.5.0及以上版本已经被弃用了...\\' $option='aaa\\\''; $option='aaa\\''; 为什么吃掉一个字符串。...反序列化问题 PHP Session 序列化及反序列化处理器设置使用不当带来的安全隐患 http://www.91ri.org/15925.html http://www.vuln.cn/6413 PHP...session 相关配选项的设置是不起作用的 session.upload_progress.enabled打开时,php记录上传文件的进度,在上传时会将其信息保存在$_SESSION中。...报错注入原理 UpdateXML(xml_target, xpath_expr, new_xml) updatexml函数有三个参数,作用是xml替换,把xml_target中被xpath_expr匹配到的部分使用

    1.2K40
    领券