Blogger Information
Blog 37
fans 1
comment 0
visits 32491
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
实用的php字符串函数总结
Jason Pu?
Original
751 people have browsed it

1.strtolower(str)字母转小写,不改变原字符串

  1. $str1 = "WWW.PHP.CN";
  2. $str_result = strtolower($str1);
  3. echo $str_result;//www.php.cn

2.strtoupper(str)字母转大写,不改变原字符串,类似的还有ucfirst()首字母转大写,ucwords()每个单词首字母转大写

  1. $str2 = "www.php.cn";
  2. $str_result2 = strtoupper($str2);
  3. $str_result3 = ucwords($str2);
  4. echo $str_result2;//WWW.PHP.CN
  5. echo "<br>";
  6. echo $str_result3;//Www.php.cn

3.strlen()返回字符串长度,可以返回中文字符的长度,但是utf8一个中文字符占三个,gbk一个中文占两个

  1. $str2 = "www.php.cn";
  2. $str3 = "php中文网";
  3. echo strlen($str2)."<br>";//10
  4. echo strlen($str3)."<br>";//12

4.trim()删除字符串左右空白字符,ltrim()删除字符串左边空白字符,rtrim()删除字符串右边空白字符串,不会改变原字符串

  1. $str3 = " hello php.cn";
  2. echo strlen($str3)."<br>";//原来的长度:14
  3. echo strlen(trim($str3))."<br>";//删除空白后的长度:12

5.substr(str,start,length)有以下几种情况:
1.从指定位置开始截取,返回字符串剩余部分
2.不会改变原字符串,返回新的字符串
3.截取不到,会返回false
4.开始位置如果是正数,从指定索引位置开始;开始位置是负数就在字符串从后往前数多少个为开始位置
5.截取长度或结束位置:可选,正数是截取的长度,负数就是从后往前数多少个为结束位置(不包含)

  1. $str2 = "www.php.cn";
  2. echo substr($str2,4,3)."<br>";//php

6.strrchr(str,”匹配的字符串”)从指定字符串最后一次出现的位置开始截取,返回字符串剩余部分
不会改变原字符串,返回一个新的字符串,截取不到会返回false

  1. $str2 = "www.php.cn";
  2. echo strrchr($str2,".")."<br>";//.cn

7.urlencode()URL字符串加密,urldecode()URL字符串解密,非字母数字字符串都将被替换成百分号后跟两位十六进制数,空格是加号

  1. $str5 = "www.php.cn/?uname=张三&age=18";
  2. $str_result5 = urlencode($str5);
  3. echo $str_result5."<br>";//www.php.cn%2F%3Funame%3D%E5%BC%A0%E4%B8%89%26age%3D18
  4. //再解一下吧:
  5. echo urldecode("www.php.cn%2F%3Funame%3D%E5%BC%A0%E4%B8%89%26age%3D18")."<br>";//www.php.cn/?uname=张三&age=18

8.不可逆加密:sha1()字符串SHA1加密,加密结果是40字符的十六进制数

  1. $password = "123456";
  2. echo sha1($password)."<br>";//7c4a8d09ca3762af61e59520943dc26494f8941b
  3. //加密了总得对比一下吧:
  4. if(sha1($password)=="7c4a8d09ca3762af61e59520943dc26494f8941b"){
  5. echo "验证成功"."<br>";
  6. }else{
  7. echo "验证失败!"."<br>";
  8. };
  9. //验证成功

9.在php5.5之前对于密码加密更多的是使用mad5或sha1+干扰字符串的方式,现在密码加密一般用password_hash(),也叫哈希算法,每次加密的值都不一样,具体参数如下:
password_hash(要加密的字符串,哈希算法常量,[选项关联数组]);
哈希算法常量包括:
1.PASSWORD_DEFAULT:使用bcrypt算法,该常量会随着PHP加入更新更高强度的算法而改变,使用此常量生成结果的长度将在未来有变化,因此,数据库里储存结果的列可超过60个字符(最好是255个字符)。
2.PASSWORD_ARGON2I:使用argon2散列算法创建散列
3.PASSWORD_BCRYPT:使用CRYPT_BLOWFISH算法创建散列,结果将会是 60 个字符的字符串,在失败时返回 FALSE。

  1. $password = "123456";
  2. $pwd= password_hash($password,PASSWORD_DEFAULT);
  3. echo $pwd."<br>";//每次刷新后值是不一样的:$2y$10$khnoAy92gP8Vw7VcrOLpteTXLVQqA4wIYzmUdCM/9jcnolhpc22Te

10.比对函数:password_verify(未加密的密码,已加密的密码),返回的结果是布尔值

  1. $verify_result = password_verify("123456",$pwd);
  2. if(!$verify_result){
  3. echo "密码错误"."<br>";
  4. }else{
  5. echo "密码正确"."<br>";
  6. };//密码正确

11.strrev(str)把字符串反转

  1. $str2 = "www.php.cn";
  2. echo strrev($str2)."<br>";//nc.php.www
  3. //12.str_shuffle(str)随机打乱字符串顺序
  4. echo str_shuffle($str2)."<br>";//ph.cnww.wp

13.进制转换:
dec:十进制
bin:二进制
hex:16进制
oct:八进制
所以把十进制转二进制就是:decbin():

  1. echo decbin(5)."<br>";//101
  2. //其它方法:base_convert(要转换的数,原来的进制,要转换的进制):
  3. echo base_convert(5,10,2)."<br>";//101

14.数字处理:
max()返回参数中最大的值,参数可以是数组
min()返回参数中最小的值,参数可以是数组
abs()返回一个数的绝对值,例如:

  1. echo abs(-10)."<br>";//10
  2. //round($val,小数点后几位)对小数进行四舍五入
  3. echo round(3.1415926,2)."<br>";//3.14
  4. //ceil() 向上取整
  5. echo ceil(1.0001)."<br>";//2
  6. //floor()向下取整
  7. echo floor(1.99999)."<br>";//1

15.时间函数:
date_default_timezone_get()获取日期/时间使用的默认时区:

  1. var_dump(date_default_timezone_get() )."<br>";//string(13) "Asia/Shanghai"

time()返回一个以秒为单位的时间戳:

  1. echo time()."<br>";//1612248504

date()里面加上格式可以转化为更易读的时间:
年:Y四位数,y二位数
月:M英文,m数字(01-12),n(1-12)
日:D英文,d数字
星期:N
小时:H:24小时格式,h:12小时模式
i:带有前导0的分钟
s:带有前导0的秒
还可以加上时间戳参数,默认是当前时间:

  1. echo date("Y/m/d/N h:i:s:a")."<br>";//2021/02/02/2 02:55:46:pm

strtotime()函数将日期和时间解析成时间戳,这个函数在做会员到期时间的时候可以用用

  1. echo strtotime("now")."<br>";//当前时间戳:1612249127
  2. echo strtotime("+1 month")."<br>";//一个月后的时间戳:1614668327
  3. echo strtotime("+1 year")."<br>";//一年后的时间戳:1643785127

16:str_split(string,length)将字符串分为数组,第一个参数是要转换的字符串,第二个是长度:

  1. print_r(str_split("abcdefg",2))."<br>";//Array ( [0] => ab [1] => cd [2] => ef [3] => g )

17:str_word_count(string,format,charlist):返回字符串中单词的使用情况:

  1. $str6="ocean apart,day after day,and i slowly go insane";
  2. print_r(str_word_count($str6),1) ."<br>";

18.copy(要复制的文件,目的地)复制文件
会返回一个布尔值,如果目标文件已存在,会被覆盖
可以弄成函数:

  1. function fcopy($o_f,$n_f){
  2. $nd = dirname($n_f);//获取目标目录
  3. if(!file_exists($nd)){
  4. echo "目录不存在";
  5. return;
  6. }
  7. $f_space = disk_free_space($nd);//获取目标磁盘剩余空间
  8. $f_size = filesize($o_f);//获取原文件大小
  9. if($f_space<$f_size){
  10. echo "磁盘剩余空间不够";
  11. return;
  12. }
  13. $re = copy($o_f,$n_f);
  14. if($re){
  15. echo "文件拷贝成功";
  16. }else{
  17. echo "文件拷贝失败";
  18. }
  19. };

19:rmdir()删除目录,unlink()删除文件,也可以写成一个函数用:

  1. function remove_dir($fname){
  2. if (is_file($fname)){
  3. $re = unlink($fname);
  4. if ($re){
  5. echo "文件删除成功了";
  6. }else{
  7. echo "文件删除失败";
  8. }
  9. }else{
  10. echo "文件不存在";
  11. }
  12. };

20:strip_tags(string,allowable_tags) 从字符串中去除 HTML 和 PHP 标记,第一个参数是要处理的字符串,第二个参数是允许存在的标签

  1. $text = '<p>Test paragraph.</p><a href="#fragment">Other text</a>';
  2. echo strip_tags($text)."<br>";//Test paragraph.Other text
  3. //带第二个参数:
  4. echo strip_tags($text,"<a></a>")."<br>";//会保留a标签
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post