|| 是什么意思符号在 Preg_replace() PHP 中的意思

时间:2021-07-19 21:21:36

标签: php regex preg-replace

我正在阅读有关如何使 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 版

1 个答案:

答案 0 :(得分:0)

| 分隔正则表达式中的替代项;例如/abc|def|ghi/ 匹配 abcdefghi

当您编写 1st=||//e 时,生成的正则表达式将为 /site||//e。其中两个选项是空字符串,它将匹配每个字符前后的空字符串。因此,这将为 phpinfo() 中的每个字符调用 $ka

实际上,您应该得到一个错误,因为您在正则表达式的末尾有两个 /。它应该是 1st=/e1st=||/e