首页 > 嗟来之食 > 【PHP】最详细PHP从入门到精通(四)——PHP中的字符串
2017
08-17

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

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

  

字符串三种声明方式

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

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

 

各种输出函数

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的符号,转为实体内容(而不是执行); & :& ":" ':' <:< >:> 空格: 转成特殊字符后,无需再转回,浏览器会自动解析为对应的标签符号;
实例展示:

echo <<<str这是定界符\n声明的字符串\nQ的前端世界\nstr;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 "<>";

<?= "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的前端世界的技术博客。

 
 

最后编辑:
作者:
这个作者貌似有点懒,什么都没有留下。

留下一个回复