字符串函数
(二)PHP中的字符串函数
常见的文件编码:GBK、gb2312、utf-8
PHP中header()函数:有2个作用,
(1)一个是页面重定向(页面跳转),用法是:header("Location:xxx.php");
(2)二是设置页面编码,用法是:header("Content-Type:text/html;charset=utf-8");
注意:在header()函数之前不能有输出。一般置于PHP代码最上面,这是取决于header()设置编码的目的。是告诉浏览器以什么样的格式输出当前页面的内容。
可以自行查一下<meta>标签和header设置编码的区别
1.获取字符串的长度
/**
* strlen($string)获取字符串长度(按字节计算)
* 在gbk编码下,一个字母或数字,占1个字节
* 一个汉字,占2个字节
*/
//在utf-8的编码下:
//一个汉字占3个字节
//一个数字和字母占1个字节,和gbk一样
* mb_strlen($str,$encoding)获取字符串长度
* 相比strlen(),多了一个可以设置编码的参数
* utf-8、gbk等等
*/
//对于有汉字的字符串,当mb_strlen()中编码参数和当前页面编码一致时,一个汉字占1个长度
2、转义函数
/**
* addcslashes($str, $charlist)
* 功能:在指定的字符前添加反斜杠\
对字符于串,仍然是在每个字符前加上\
* 参数$charlist:可以是一个字符,也可以是多个字符,也可以是范围
*/
/**
* stripcslashes($str)函数:
* 反引用一个使用 addcslashes() 转义的字符串
* 当选择对字符 0,a,b,f,n,r,t 和 v 进行转义时需要小心,
* //它们将被转换成 \0,\a,\b,\f,\n,\r,\t 和 \v。
* 在 PHP 中,只有 \0(NULL),\r(回车符),\n(换行符)和 \t(制表符)是预定义的转义序列,
* 而在 C 语言中,上述的所有转换后的字符都是预定义的转义序列。
*/
$e1="asbndbnds";
echo $e1;br();
//在字符s之前添加\
$e11=addcslashes($e1, 's');br();
//输出addcslashes()在s前加上\的结果
echo $e11;br();
//输出原来的字符串,还是原来的,因为addcslashes()是非引用传参,不会改变参数原来的值
echo $e1;br();
//输出stripcslashes()反引用的字符串
//对于普通字符s,则还原,但是\n,\b这样的转义字符则会被解析,例如\n被当做空格输出
echo stripcslashes($e11);
3、转换函数
/**
* bin2hex($str)函数:把字符串转换为16进制
*/
/**
* chr($ascii)函数:把ASCII码转换为对应的字符
*/
/**
* ord($string)函数:返回字符所对应的ASCII
*/
/**
* ucfirst($str)函数:将字符串的首字符转换为大写
*/
/**
* lcfirst($str)函数:将字符串的首字符转换为小写
*/
/**
* ucwords($str)函数:把字符串中每个单词的首字符转换为大写 单词之间用空格
*/
/**
* strtolower($str)函数:把字符串中所有的字符转换为小写
*/
/**
* strtoupper($string)函数:把字符串中所有的字符转换为大写
*/
4、移除特定的字符
/**
* chop($str, $character_mask)函数:移除字符串右端的空白字符或其他预定义字符
* 右端!!
* 对于第2个参数中出现的字符都会一个个移除
*/
/**
* rtrim($str):移除字符串右端的空白字符或其他预定义字符
*/
/**
* ltrim($str):移除字符串左端的空白字符或其他预定义字符
*/
/**
* trim($str)函数:移除字符串两端的空白字符或其他预定义字符
*/
5、字符串分隔函数
/**
* chunk_split($body,$chunklen,$end)函数:
* $body-被分隔的字符串
* $chunklen-要分隔的小串的长度
* $end-小串之间的分隔符
*/
echo chunk_split("hello world",3,'......');
/**
* explode($delimiter, $string,$limit=null)函数:将字符串分隔为数组
* 返回值是数组
* 注意:和数组一章中的implode()函数区分开来
*/
print_r(explode(",", "hel,lowo,rld",3));
/**
* str_split($string,$split_length=null)函数:把字符串分隔到数组中
* $split_length:代表的是返回的数组中每个元素的长度,默认每个元素的长度为1
* 返回值是一个数组
*/
6、统计函数
/**
* count_chars($string,$mode=null)函数:统计字符串中每个字符的信息
* 根据不同的 mode , count_chars() 返回下列不同的结果:
0 - 以所有的每个字符作为键名,出现次数作为值的数组。
1 - 与 0 相同,但只列出出现次数大于零的字符。数组。
2 - 与 0 相同,但只列出出现次数等于零的字符。 数组。
3 - 返回由所有使用了的字符组成的字符串。
4 - 返回由所有未使用的字符值组成的字符串。
*/
echo count_chars("helloworld",4);
/**
* str_word_count($string,$return=null)函数
*统计字符串中单词的个数
* 0-默认。返回单词的个数
* 1-返回值是一个数组,包含字符串中出现的所有单词
* 2-返回值是数组,键名是单词首字符出现的位置,键值就是那个单词
*/
/**
* substr_count($str,$searchStr,$start,$length)函数:
* 统计子串在字符串中出现的次数
* 从$start位置开始在$str中搜索$searchStr,搜索长度为$length
* 如果不指定搜索长度,则会从开始位置一直搜索到字符串结尾
*/
7、加密函数
echo md5(123456);br();
8,换行函数:把\n转换为换行
echo nl2br("abc\ndfe");hr();
9、数字格式化函数
number_format($number);
10、替换函数
/**
* str_ireplace($search, $replace, $subject)替换字符串中的函数
* (1)若未找到字符串,则返回原来的字符串
* (2)不区分大小写
* $search是被当做一个有序的整体去查询
*/
/**
* substr_replace()将字符串的一部分替换为别的
* $start要替换的开始位置
与str_ireplace()的区别:区分大小写
* $length要替换的长度
*/
Echosubstr_replace("hellokitty","world",6,2);
11.重复函数
/**
* $multiplier指定字符串重复的次数
*/
echo str_repeat("hah", 5);
12,比较函数
/**
* strcasecmp($str1, $str2)根据每一位的ASCII码,比较2个字符串的大小
* (不区分大小写)
*/
echo strcasecmp("Ac", "abc");
/**
* 根据每一位的ASCII码,比较2个字符串的大小
* (区分大小写)
*/
strcmp($str1, $str2)
13.搜索函数
/**
* strchr($string,$search,$part)
* 搜索子串在字符串中第一次的出现
* $part参数是布尔类型,决定了函数的返回值
* true-返回搜索到的字符串出现之前的部分
* false-默认。之后的
* $search-如果是数字,则查找ASCII码为该数字的字符
*/
echo strchr("abcdefgcd", "cd",true);br();
echo strchr("abcdefgcd", 98,false);
br();
/**
* stripos($string, $find,$start)
* 搜索子串在字符串中第一次的位置
* 不区分大小写
* 返回子串的首字符的索引
*/
echo stripos("hello world", "Wo",0);
14.字符串截取函数
/**
* $start开始截取的位置
* $length要截取的长度
*/
echo substr("helloeworsd", 3,6);
echo substr("s你s好s世s界", 0,2);
作业:
PHP中中文字符串的截取
函数和方法