PHP中preg_replace函数如何实现复杂模式替换的详细解析?

更新于
2026-09-23 06:59:46
0阅读来源:SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计967个文字,预计阅读时间需要4分钟。

PHP中preg_replace函数如何实现复杂模式替换的详细解析?

0x01 起因:下午遇到了 preg_replace 函数,我们都知道 preg_replace 函数可能会引发命令执行。目前我们遇到了一些情况。

0x02 经过:踩坑1:测试代码大致如下:foreach ($GET as $re)

0x01 起因

事情的起因是下午遇到了 preg_replace 函数,我们都知道 preg_replace 函数可能会导致命令执行。现在我们来一些情况。

0x02 经过

踩坑1:

测试代码大概是这样的:

foreach ($_GET as $regex => $value) { preg_replace('/(' . $regex . ')/ei','strtolower("\\1")',$value); }

测试过程中发现通过浏览器的方式传入数据的时候,会将 . + 等特殊字符转换为 _ 。

这里涉及到了php的一个特性

php自身在解析请求的时候,如果参数名字中包含空格、.、[等字符,会将他们转换成_。

阅读全文

本文共计967个文字,预计阅读时间需要4分钟。

PHP中preg_replace函数如何实现复杂模式替换的详细解析?

0x01 起因:下午遇到了 preg_replace 函数,我们都知道 preg_replace 函数可能会引发命令执行。目前我们遇到了一些情况。

0x02 经过:踩坑1:测试代码大致如下:foreach ($GET as $re)

0x01 起因

事情的起因是下午遇到了 preg_replace 函数,我们都知道 preg_replace 函数可能会导致命令执行。现在我们来一些情况。

0x02 经过

踩坑1:

测试代码大概是这样的:

foreach ($_GET as $regex => $value) { preg_replace('/(' . $regex . ')/ei','strtolower("\\1")',$value); }

测试过程中发现通过浏览器的方式传入数据的时候,会将 . + 等特殊字符转换为 _ 。

这里涉及到了php的一个特性

php自身在解析请求的时候,如果参数名字中包含空格、.、[等字符,会将他们转换成_。

阅读全文