什么是||符号表示 Preg_replace() PHP
what does || symbol means in 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
。其中两个备选方案是空字符串,它们将匹配每个字符前后的空字符串。所以这将为 $ka
.
中的每个字符调用 phpinfo()
实际上,您应该得到一个错误,因为您在正则表达式的末尾有两个 /
。应该是 1st=/e
或 1st=||/e
.
我正在阅读如何使 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
。其中两个备选方案是空字符串,它们将匹配每个字符前后的空字符串。所以这将为 $ka
.
phpinfo()
实际上,您应该得到一个错误,因为您在正则表达式的末尾有两个 /
。应该是 1st=/e
或 1st=||/e
.