php - 是什么 || 符号在 Preg_replace() PHP 中的意思
问题描述
我正在阅读有关如何使preg_replace()像eval()函数一样,如果我们放置修饰符 /e 这是我的代码:
$fa= '/site'.$_GET['1st'];
$sh= $_GET['replace'];
$ka= 'admin the best over the rest';
echo preg_replace($fa,$sh,$ka);
如果代码在现场运行,它看起来像:
www.site.com/a.php?1st=//e&replace=phpinfo();
但是有一个问题是修饰符 /e 后面不能跟任何东西,所以如果我们放 || 它将起作用。像这样 :
www.site.com/a.php?1st=||//e&replace=phpinfo();
所以这是我的问题|| 在这里以及它是如何工作的?
我正在使用 Windows 10 和 php 版本 5.2
解决方案
|
分隔正则表达式中的备选方案;例如/abc|def|ghi/
匹配abc
,def
或ghi
.
当您编写1st=||//e
生成的正则表达式时,将是/site||//e
. 其中两个选择是空字符串,它将匹配每个字符之前和之后的空字符串。所以这将调用phpinfo()
.$ka
实际上,您应该得到一个错误,因为您/
在正则表达式的末尾有两个。应该是1st=/e
或1st=||/e
。
推荐阅读
- javascript - js中的数据结构和算法问题(初级)
- jmeter - 在 jmeter 中执行 android 应用程序负载测试时遇到错误 443
- javascript - Javascript 语法 - 声明对象
- python - 从按钮命令 Tkinter 调用异步函数
- python-3.x - 使用枚举在python中随机化逻辑
- ssas - 度量层次结构已出现在 Axis0 轴中
- amazon-web-services - REST API 和缓存
- python - 为什么使用 value_counts() 和 shape[0] 时会显示 2 个不同的长度?
- laravel - 如何在 POST 表单的隐藏输入中保存文件?
- unreal-engine4 - UE4 增加 NAME_SIZE 限制