首页 > 解决方案 > 是什么 || 符号在 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

标签: phpregexpreg-replace

解决方案


|分隔正则表达式中的备选方案;例如/abc|def|ghi/匹配abc,defghi.

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

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


推荐阅读