【PHP】最详细PHP从入门到精通(四)——PHP中的字符串

 PHP从入门到精通

之PHP中的字符串

   大家好,继续跟进PHP最详尽的知识更新,本周,跟大家重点讲一下PHP中字符串的使用。在PHP中,字符串是非常重要的一个概念,基本上大家想到的字符串的处理功能,系统都已有相关函数了。php自诞生之初,就是为web开发而来的,网站开发中,字符串处理,是php的一大亮点。

   下面博主将带给详细的给大家介绍PHP中常用的字符串:

  

字符串三种声明方式

1、"":双引号中可以解析变量"{$a}",双引号中可以使用任何转义字符;
2、'':单引号中不可以解析变量,单引号中不可以使用转义字符(但是可以使用单引号自身和转义符自身--->\' \\);
3、定界符:<<<标识符
标识符;必须顶格写,且整行不能有其他字符
定界符中可以使用变量,可以使用字符,也可以使用单双引号

实例展示:

echo <<<str
这是定界符\n
声明的字符串\n
Q的前端世界\n
str;

 

各种输出函数

1、echo:直接将内容输出。
①可以是函数用法echo() ,也可以是指令用法echo "";
②指令用法可以打印多个参数,用逗号分隔;echo "","","";
函数用法只能打印一个参数; echo ("");

2、print:基本与echo功能类似,但是
①总是有返回值1;
②无论函数写法还是指令写法,都只能传一个参数;

3、print_r:打印数组和对象时,会用一定的格式显示键和值的匹配;
print_r打印数组时,把数组的指针移到最后边。使用 reset() 可让指针回到开始处。(不推荐!推荐var_dump)

4、var_dump:调试专用!!显示打印的类型、值等信息,打印数组对象时,会缩进显示键值匹配;

5、exit()和die():两个函数完全别名关系,没有任何区别!!
输出信息,并且结束当前脚本(可以不输出信息)。
exit、exit()、exit("")都合法;

6、printf:打印内容,并将变量进行格式化输出;
第一个参数:需要打印的字符串内容,可以带多个占位符;
第二到多个参数:与占位符一一对应的变量;
作用:将后面的变量,按照占位符的格式要求依次输出;
%% 返回百分比符号
%b 二进制数
%c 依照ASCII值的字符
%d 带符号十进制数
%e 可续计数法(如1.5e3)
%u 无符号十进制数
%f或%F 浮点数
浮点数默认保留6位小数(四舍五入);%和f之间可以插入数字表示精确度。数字的小数部分,表示保留几位小数,四舍五入;数字的整数部分,表示精确的总宽度(整数+小数+小数点的总位数);如果设置的宽度<实际宽度,设置无效;如果如果设置的宽度>实际宽度,左边空格补位。
补0需在%之后宽度之前加一个0(只能补0);
%o 八进制数
%s 字符串
%x或%X 十六进制数
7、sprintf: 使用与printf一样,只是不是输出语句,而是将转换后的结果赋给一个变量;
eg:$str=sprintf("%.2f",1,23456)保留两位小数,赋给str;

实例展示:

$num=10;
echo "123","456","789";
print("123");
printf("haha%bha",$num);

 

PHP字符串的常用函数

trim():删除字符串两端的空格;
ltrim():删除字符串左边的空格;
rtrim():删除字符串右边的空格;

可以传入第二个参数,表示删除两边的相关字符;
echo trim($str,"! ");-->只要字符串两边出现!和空格,都会删除。
原理:从字符串两边开始,一次向内查找第二个参数中出现的字符,只要发现就删除,直到遇到第一个没有出现的字符为止!!

第二个参数常写为: " \t\n\r\0\x0B",用于把空格和相关符号都删掉;

" " (ASCII 32 (0x20)),普通空格符。
◦ "\t" (ASCII 9 (0x09)),制表符。
◦ "\n" (ASCII 10 (0x0A)),换行符。
◦ "\r" (ASCII 13 (0x0D)),回车符。
◦ "\0" (ASCII 0 (0x00)),空字节符。
◦ "\x0B" (ASCII 11 (0x0B)),垂直制表符。

实例展示:

$str=" 这 是 空 格 ! ";
echo ltrim($str)."\n";
echo rtrim($str)."\n";
echo trim($str,"! ")."\n";
echo trim($str,"! 格")."\n";
echo trim($str," \t\n\r\0\x0B")."\n";

 

str_pad():将字符串用指定字符,填充到指定长度;
①需要填充的字符串;必选。
②需要字符串填充到多长。必选。
如果长度<=输入字符串,则不起作用;
③需要填充的文本;可选;
默认空格填充。
④在字符串哪边填充:STR_PAD_LEFT/STR_PAD_RIGHT/STR_PAD_BOTH(2,0,1);
默认在右边填充。如果选BOTH,从两边填。

实例展示:

$str="abcde";
echo str_pad($str, 11,"123",STR_PAD_BOTH);

 

strtolower():将所有字母转成小写;
strtoupper():将所有字母转成大写;
上述两个常用于不区分大小写对比!

ucfirst():将字符串首字母转成大写;
ucwords():将每个单词的首字母转成大写(空格分隔单词);

后两个只负责转首字母,并不管其他字母的大小写。如果只需要首字母大写,通常配合strtolower()先将所有字母转小写。

实例展示:

$str="Hello MY world";
echo ucwords(strtolower($str));

 

与HTML相关的函数

1、nl2br($str):将字符串中所有的换行符,转为</br>。
2、htmlspecialchars($string):将指定的HTML的符号,转为实体内容(而不是执行);
& :&amp; ":&quot;
':&#039; <:&lt;
>:&gt; 空格:&nbsp;
转成特殊字符后,无需再转回,浏览器会自动解析为对应的标签符号;

实例展示:

echo <<<str
这是定界符\n
声明的字符串\n
Q的前端世界\n
str;
echo nl2br($str);

htmlspecialchars($str);

 

3、strip_tags($str)删除出现的HTML标签,将字符串中所有的HTML标签删除
参数: 1.需要过滤的HTML标签的字符串
2.允许的HTML标签, 例如strip_tags($str,"<b>")允许$str中只存在b标签;

实例展示:

$str = <<<str
    "哈哈哈"\n
    "嘻嘻嘻"\n    
str;
    
    echo nl2br($str);
    echo htmlspecialchars($_POST["test"]);
    echo "&lt;&gt;";

  <?= "haha"    ?>  // 输出表达式,不能在PHP中使用,通常用于HTML嵌套:<h1 style="color: <?='red'?>"></h1>

 

strrev($str):将字符串反转 "123"--"321"

strlen($str):统计字符串的字符个数,中文=3个字符
mb_strlen($str):测量多字节字符串的长度,不论中英文,都算一个长度
{PHP中,很多字符串长度,都有mb_的前缀,专门用于操作中文多字节字符串}

number_format():将一个浮点数,格式化为一个字符串
参数:1.需要格式化的浮点数(必须)
   2.保留几位小数,默认不保留
   3.小数点的显示符号,默认.;
   4.千位分隔符的显示符号,默认,;


md5()/sha1():分别使用md5及sha1加密算法对字符串进行加密操作;

实例展示:

 

1 $str = "abcdefg";
2 echo strrev($str);
3 
4 $str = "abcdefg";
5 echo strlen($str);

 

 

 

字符串的比较

1.可以用运算符比较
①如果两边都是字符,则比较首字母ASCII值;
②如果有一边是数字,则将字符串转为数字后再比较;

2、strcmp($str1,$str2)
①$str1>$str2--- 1 $str1<$str2----- -1 $str1==$str2----0

②strncmp 与strcmp完全相等,只是多了必填的第三个参数,表示字符串的长度

3、strcaseccmp 不区分大小写比对全字符串

4、strnatcmp 将字符串按照自然排序算法进行比较
strcmp("10","2");按照ASCII码,1<2故返回-1
strnatcmp("10","2");按照自然排序,10>2故返回1
所以两个函数在字符串相等时,返回0,没有任何差异

similar_text($first, $second)返回两个字符串的相似度。

实例展示:

var_dump(similar_text("img12", "img13"));

 

字符串的分隔

explode 第一个分隔符(不能为空""),第二个需要处理的字符串,第三个将字符串最多分为几份,如果小于实际分数,则前N-1个正常分,最后一个包含所有字符;

preg_split通过一个表达式分隔字符串,参数同上,第一个参数为正则表达式;


参数:① 需要分割的字符串;
②几个字符做个数组的一个元素,可选,默认一个;
③将字符串的每个字符,分隔为数组;
implode(string 连接符,Array 数组) 将数组用指定的连接符,链接为一个字符串;
eg:implode("",["a","b","c"])---->abc
implode(",",["a","b","c"])---->a,b,c

实例展示:

 var_dump(explode(",", "s,t,r,i,n,g",3));
 var_dump(str_split("hahahahaa",3));

substr(String $string, Int $start)
①需要截取的字符串,必选
②从第几个字符开始截取,必选
③截取的长度 可选,默认直接截取到最后(汉字相当于三个字符,用mb_substr);
mb_substr($str, $start)用于截取中文字符串,一个中文算一个字符
var_dump(substr("1234561111", 8,5));


字符串中查找 strstr 查找并返回字符串中是否包含某个子串,如果没找到,返回false
① 被查找的字符串,必选
② 需要查找的子串,必选
③ true/false false:返回子串及子串后的所有字符串,默认
true:返回子串前的部分

stristr 功能同上,不区分大小写

strrchr 取到第一个子串第一个字符最后一次出现的位置,返回当前位置及之后的字符串;
①被查找的字符
②需要查找的字符,如果第二个参数是字符串,则只会使用字符串的第一个字符,如果找到,返回该字符最后一次出现的位置,往后的部分;

实例展示:

var_dump(strstr("123456", 3));
var_dump(strrchr("123456", "234"));

 

重点!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
strpos返回某个子串在字符串中,第一次出现的位置
①被查找的字符串
②需要查找的字符串
③从第几位开始查,默认从头开始

strrpos返回某个子串在字符串中,最后一次出现的位置,其他同上;
stripos不区分大小写,返回第一次出现的位置;
strripos不区分大小写,返回最后一次出现的位置;

实例展示:

1 var_dump(strpos("123456aaxaa", "aa"));

str_replace
①被替换部分,可以是字符串也可以是数组
②新内容,可以是字符串也可以是数组
③原字符串

情况①第一个字符串,第二个字符串
var_dump(str_replace("e", "/", "aajsnianceomoe555el"));
原字符串中的e被替换为/
情况②第一个数组,第二个数组
>>>1.两数组长度相等,一一替换
2.数组一长度>数组二长度,第一个数组剩下的用""替换(删了)
3.数组一长度<数组二长度,第二个数组剩下的不用
情况③第一个数组,第二个字符串,数组的每一个,都替换为字符串.

实例展示:

1 var_dump(str_replace("e", "/", "aajsnianceomoe555el"));
2 var_dump(str_replace(["e","0"], ["/",""], "aajsnianceomoe5550el"));

 

本期分享就到这里,我们下期再见。觉得内容不错的小伙伴请点推荐,欢迎大家在评论下方评论区与博主互动,谢谢大家!

未完,待续。。。

 更多精彩内容,敬请关注 Q的前端世界的技术博客。

 

 

posted @ 2017-06-26 00:19  pixel-matrix  阅读(1385)  评论(1编辑  收藏  举报