PHP文件上传相关函数有哪些,怎么用
Admin 2022-08-03 群英技术资讯 354 次浏览
对这些函数的深入理解应该有助于文件上传利用的顺利进行。
deldot函数为upload-lab中一个常见的函数,它实际为一个自定义函数,定义于common.php中,函数定义如下:
function deldot($s){ for($i = strlen($s)-1;$i>0;$i--){ $c = substr($s,$i,1); if($i == strlen($s)-1 and $c != '.'){ return $s; } if($c != '.'){ return substr($s,0,$i+1); } } }
即从字符串的尾部开始,从后向前删除点.,直到该字符串的末尾字符不是.为止。
因此对于如下输入,
echo deldot("hello world")."\n"; echo deldot("hello world.")."\n"; echo deldot("hello world....")."\n"; echo deldot("hello.world.")."\n";
输出为
hello world
hello world
hello world
hello.world
in_array(mixed $needle, array $haystack, bool $strict = false): bool
其中第一个参数$needle为待搜索的值,$haystack为被搜索的数组,第三个参数决定是否进行类型比较。
第三个类型默认为false,即不考虑类型是否相同。
对于如下输入:
if(in_array("AAA",$arr,false)) echo 1; if(in_array("aaa",$arr,false)) echo 2; if(in_array("AAA",$arr,true)) echo 3; if(in_array("aaa",$arr,true)) echo 4;
输出
13
intval(mixed $value, int $base = 10): int
intval 函数用于获取变量的整数值。
第一个参数$value为要获取整数值的变量,可以为字符串、数值和数组。
第二个参数$base指定了转换所使用的进制,当且仅当要转换的变量为字符串时有效。
当第二个参数为0时,会检测变量的格式来决定使用的转换进制。
intval函数返回的数值为一个int类型的数值。当转换不成功时,返回0。
特别要注意,使用该函数返回的值有上限。当转换的数值大于php的整数范围时,返回的结果为整型数值的取值上限。
echo intval("111"); echo "\n"; echo intval("111a"); echo "\n"; echo intval("0x333"); echo "\n"; echo intval("888",8); echo "\n"; echo intval("122",3); echo "\n"; echo intval("11111111111111111111111111111111111"); echo "\n"; echo intval("2222222222222222222222222222222");
输出为
111
111
0
0
17
9223372036854775807
9223372036854775807
strrchr(string $haystack, mixed $needle): string
strrchr函数在字符串$haystack中查找$needle,并将最后一次查找到的$needle及其后面的字符串返回。如果没有在该字符串中查找到$needle,则返回false。
注:
$S = "hhhahahaha2333"; echo strrchr($S,'h')."\n"; echo strrchr($S,'hwweraer')."\n"; echo strrchr($S,104)."\n"; if(strrchr($S,'k') == false) echo "false";
ha2333
ha2333
ha2333
false
strtolower(string $string): string
将字符串$string中的各个英文字符转换为小写并返回。
$S = "HaHaHaHa,Hello!!"; echo strtolower($S);
hahahaha,hello!!
strrpos(string $haystack, string $needle, int $offset = 0): int
返回字符$needle最后一次出现的位置。
在php4中,$needle只能为单个字符。如果$needle中存在多个字符,仅使用第一个字符做匹配。
和strrchr相似,如果$needle是一个数值,则使用该数值对应的ASCII码字符进行匹配。
从php5开始,$needle可以为多个字符。
从php5开始,strrpos新增一个参数$offset,可以指定从$haystack的哪儿位置开始进行匹配。
返回匹配的下标位置,没有匹配到时返回false。
注意:
$s = "Phpphphpphpp"; echo strrpos($s,"php"); echo strrpos($s,"h"); echo strrpos($s,"P"); if(strrpos($s,"PHP") === false) echo "No exist";
输出:
890No exist
注:测试使用的PHP版本为5.3.3。
在PHP4中结果可能不一样。
str_ireplace( mixed $search, mixed $replace, mixed $subject, int &$count = ? ): mixed
str_ireplace函数用于对数组中的元素或字符串中的子串进行替换。
第一个参数$search为需要替换的内容(子串或数组),第二个参数$replace为替换成的内容(字符串或数组),第三个参数$subject为被替换的字符串。
$count可以用于限定替换次数。
注:
<?php echo str_ireplace("php","","hello.php")."\n"; echo str_ireplace("pHP","","hello.Php")."\n"; echo str_ireplace("php","","hello.phPHpp")."\n"; echo str_ireplace("php","p","hello.phphp")."\n"; echo str_ireplace("php",""."phpphpphpphpphp.php",3)."\n"; echo str_ireplace(array("php","html"),"","hello.php.html")."\n"; echo str_ireplace(array("php","html"),array("1","2"),"hello.php.html")."\n"; echo str_ireplace(array("php","html","css"),array("1","2"),"hello.php.css.html")."\n"; echo str_ireplace(array("php","html","css"),"1","hello.php.css.html")."\n"; foreach (str_ireplace(array("php","html","css"),array("1","2","3"),array("hello.html","hello.css","hello.html")) as $it){ echo "$it "; } ?>
hello.
hello.
hello.Hpp
hello.php
3
hello…
hello.1.2
hello.1…2
hello.1.1.1
hello.2 hello.3 hello.2
strstr(string $haystack, mixed $needle, bool $before_needle = false): string
查找字符串$needle在$haystack中首次出现的位置,并将$needle及其之后的字符串返回。
PHP5起新增第三个参数$before_needle,如果$before_needle取值为true,则返回$needle前面的部分。
$s = "123phpphp.php"; echo strstr($s,"php")."\n"; echo strstr($s,"php",true)."\n";
phpphp.php
123
substr(string $string, int $offset, ?int $length = null): string
返回字符串$string中的子串。
$offset指定子串首个字符在$string中的下标位置,$length指定截取的子串长度。
$length的取值:
$s = "123456789"; echo substr($s,1,3)."\n"; echo substr($s,1,-1)."\n"; echo substr($s,1)."\n"; echo substr($s,1,0)."\n";
234
2345678
23456789
trim(string $str, string $character_mask = " \t\n\r\0\x0B"): string
去除字符串$str的首尾的空白字符。
当第二个参数保持默认时,去除的字符为:
$s = "\n 1 23456789\t\n123456789\r"; echo trim($s);
1 23456789
123456789
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
下面由Laravel教程栏目给大家介绍laravel hasManyThrough用法及参数,希望对大家有所帮助!
跨域:指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。同源策略:同源策略/SOP(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。 常见跨域方
对于PHP设计模式中的中介者模式,一些新手可能不是很理解,对此这篇文章就给大家详细介绍一下关于中介者模式原理、使用等相关内容,有学习需要的朋友可以参考。
在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?
在本篇文章里小编给大家整理了一篇关于php中的标量数据类型总结内容,对此有兴趣的朋友们可以跟着学习下。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008