PHP
此篇用于记录一些php的基础知识与函数补充
PHP将查询字符串(在URL或正文中)转换为内部关联数组$_GET或关联数组$_POST。例如:/?foo=bar变成Array([foo] => “bar”)
值得注意的是,查询字符串在解析的过程中会将某些字符删除或用下划线代替
php需要将所有参数转换为有效的变量名,因此在解析查询字符串的时候,它会做两件事:
①删除前后的空白符(空格符,制表符,换行符等统称空白符)
②将某些字符转换为下划线(包括空格)
phpinfo()函数
会输出关于 PHP 配置的信息
返回类型:phpinfo()函数返回一个布尔值
phpinfo ([ int $what = INFO_ALL ] )
system()函数
系统权限允许的情况执行系统命令,并输出结果
parse_url函数
解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分
php预定义变量$_SERVER
create_function函数
该函数用来创建匿名函数,并为其返回唯一名称
PHP4,PHP5,PHP7
create_function(string $args,string $code)
//string $args 声明的函数变量部分
//string $code 执行的方法代码部分
使用例
$id=$_GET['id']; $code = 'echo $name. '.'的编号是'.$id.'; '; $b = create_function('$name',$code); //实现 function niming($name){ echo $name."编号".$id; } $b('sd');
payload:
?id=2;}phpinfo();/*
此时代码为 function niming($name){ echo $name.编号2; }phpinfo();/* }
foreach()函数
遍历数组
仅能用于数组,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误
foreach (array_expression as $value) statement
//遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步
foreach (array_expression as $key => $value) statement
- 当 foreach 开始执行时,数组内部的指针会自动指向第一个单元
mb_substr()函数
返回字符串的一部分,如果失败则返回 FALSE,或者返回一个空字符串
PHP:4+
mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] ) : string
encoding
:可选。字符编码。如果省略,则使用内部字符编码。
mb_strpos()函数
查找字符串在另一个字符串中首次出现的位置
PHP 4 >= 4.0.6, PHP 5, PHP 7
mb_strpos (haystack ,needle )
//haystack:要被检查的字符串
//needle:要搜索的字符串
- 以数字形式返回字符串位置,如果没有找到该字符串,则返回 false
strstr()函数
判断字符串str2是否是str1的子串。如果是,则该函数返回 str1字符串从 str2第一次出现的位置开始到 str1结尾的字符串;否则,返回NULL。(搜索字符串在另一个字符串出现的位置,)
PHP3,PHP4,PHP5
strstr(str1,str2)
- 该函数区分大小写,不区分的可用
stristr()
strrev()函数
反转字符串
strrev(string)
str_ireplace()函数
替换字符串中的一些字符(不区分大小写)
PHP5+
str_ireplace(find,replace,string,count)
- 可使用
str_replace()
函数执行区分大小写
lcfirst()函数
把字符串中的首字符转换为小写
glob()函数
返回匹配指定模式的文件名或目录
返回一个包含有匹配文件 / 目录的数组。如果出错返回 false
glob(pattern,flags)
检索模式
print与print_r
print
:只允许输出一个字符串
print_r
:打印变量
file_put_contents()函数
将一个字符串写入文件
int file_put_contents ( string filename, string data [, int flags [, resource context]] )
filename 要被写入数据的文件名,支持带路径输入
data 要写入的数据(支持伪协议)
explode()函数
使用一个字符串分割另一个字符串,并返回由字符串组成的数组。
<?php
$str = "www.runoob.com";
print_r (explode(".",$str));
?>
>>>Array
(
[0] => www
[1] => runoob
[2] => com
)
array_push()函数
向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度
array_push(array,value1,value2...)
array_pop()函数
删除数组中的最后一个元素
<?php
$a=array("red","green","blue");
array_pop($a);
print_r($a);
?>
>>> Array ( [0] => red [1] => green )
array_walk()函数
对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数
遍历对象的属性,并对属性执行回调函数
<?php
function myfunction($value,$key)
{
echo "The key $key has the value $value<br>";
}
$a=array("a"=>"red","b"=>"green","c"=>"blue");
array_walk($a,"myfunction");
?>
>>>The key a has the value red
>>>The key b has the value green
>>>The key c has the value blue
hexdec()函数
返回与 hex_string 参数所表示的十六进制数等值的的十进制数
hexdec(hex_string)
hexdec()
会将遇到的所有非十六进制字符替换成 0,这样,所有左边的零都被忽略,但右边的零会计入值中
hex2bin()函数
把十六进制值的字符串转换为 ASCII 字符
<?php
echo hex2bin("48656c6c6f20576f726c6421");
?>
Hello World!
error_reporting(0)
阻止报错
assert()函数
断言函数,如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行
PHP 5
bool assert ( mixed $assertion [, string $description ] )
PHP 7
bool assert ( mixed $assertion [, Throwable $exception ] )
extract()函数
从数组中将变量导入到当前的符号表
PHP4+
extract(array,extract_rules,prefix)
例:
<?php
$a = "Original";
$my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse");
extract($my_array);
echo "\$a = $a; \$b = $b; \$c = $c";
?>
>>> $a = Cat; $b = Dog; $c = Horse
stripos()函数
查找字符串在另一字符串中第一次出现的位置(不区分大小写)
PHP5+
stripos(string,find,start)
例:
<?php
echo stripos("I love php, I love php too!","PHP");
?>
// 7
@
要是放在有返回值的地方, 作用是忽略当前代码行执行过程中出现的错误,然后继续执行下面的代码
传入时需要编码为%23,因为浏览器不会解析#