字符串操作
在php开发过程中有些基础知识一时想不起来,如果同事间合作略显尴尬,小编整理了一些对字符串的基本操作的知识点供大家参考。如有误点还请指点,谢谢。
1.字符串简介
字符串是指由零个或多个字符串构成的一个集合,这里所说的字符主要包含以下几种类型。
1.数字类型:1,2,3等。
2.字母类型:a,b,c等。
3.特殊字符型:#,¥,%等。
4.不可见字符型:换行符(\n),回车符(\r),Tab字符(\t)等。
其中,不可见字符是比较特殊的一组字符,它用来控制字符串格式化输出,在浏览器上不可见,只能看到字符串输出的结果。
2.单引号和双引号的使用方法及区别
字符串同城一串的整体作为操作对象,一般用单引号或者双引号表示一个字符。单引号和双引号在使用上有一定的区别。
$s1 = "张三" ; echo $s1 : 张三
$s2 = '李四'; echo $s2 :李四
对比
$s4 = "你好s1" ; 输出: 你好张三
$s4 = "你好s2" ; 输出:你好$s2
总结:就是说双引号中的变量PHP会解析,而单引号中的变量PHP不会解析.
3.字符串的连接符
半角句号"."是字符串链接符,可以吧两个或两个以上的字符串链接成一个字符串.
例如:
<?php
$name = "PHP";
$name1 = "是世界上最好的语言!";
echo $name.$name1;
?>
结果为:PHP是世界上最好的语言!
4.字符串操作
4.1 去除字符串收尾空格和特殊字符方法
1.trim()
函数:去除首尾字符和特殊符,并返回处理后的字符
2.ltrim()
函数:去除字符串左边的空格和特殊字符
3.rtrim()
函数:去除字符串右边的空格和特殊字符
例如:string trim(strimg str[,string charlist]);
str:表示要操作的字符串对象
charlist:可选参数,表示指定要从字符串中删除哪些字符,如果不设置则删除所有字符
charlist可选参数:
- \0: null,空格
- \t: tab,制表符
- \n: 换行符
- \x0B: 垂直制表符
- \r: 回车符
- " ": 空格
除了这些参数之外,也可以在chaarlist参数中提供要去除的特殊字符.
4.2 字符串转义
字符串转义、还原的方法有两种:一种是手动转义&字符串还原数据,另一种是自动转义&还原字符串数据;
1.手动转义,还原字符串数据.
在字需要转义的字符串前面加"\"转移符. 对于数据量较大的字符串建议使用自动转义函数转义.
注意:手动转义的字符串可以使用 addcslashes()函数进行字符串还原.
2.自动转义,还原字符串数据.
-
addslashes()
函数:自动转义函数: -
stripslashes()
函数:自动还原函数: -
addslashes()
函数为字符串str加入反斜线"\"; 使用方法:string addslashes(strimg str); -
stripslashes()
函数把转义后的字符串还原;使用方法:strimg stripslashes(strimg str);
注意:如果参数charlist中包含\n,\r等字符,讲义C语言风格转换,而其他非字母数字且ASCII码值低于32或高于126的字符均转换成八进制表示.
4.3 获取字符串长度
1.strlen()
函数:获取字符串长度值,例如:int strlen(string str)
说明:汉字占两个字符,数字,英文,小数点,下划线和空格占一个字符.
2.strlen()
函数在获取字符串长度的同时也可以检测字符串长度.
<?
if(strlen($_POST['pwd'])<6){ //检测是否小于6
echo "<script>alert('用户名或密码不得小于6位!');history.back();</script>";
}else{
echo "用户信息合法!";
}
4.4 截取字符串
1.substr()
函数:分割字符串 例如:string substr(string str,int start [,int length])
- str:指定字符串对象
- start:指定开始截取字符串的位置,如果为负数,则从字符串的末尾开始.(开始从0位置开始)
- length:可选参数,指定截取字符的个数,如果为负,则表示渠道倒数第length个长度.
- 连接字符:如果字符大于30个只显示前30个字符,后面用点代替
if(strlen($text)>30){
echo substr($text,0,30)."...";
}else{
echo $text;
}
注意:如果截取字符串有中文请尽量保持截取偶数个字符,如果截取的值是奇数,可能会导致字符乱码,因为一个中文字占两个字符,解决办法就是应用substr()编写一个自定义函数.
4.5 比较字符串
strcmp($str1,$str2) 字节大小比较区分大小写
strcasecmp($str1,$str2) 字节大小比较不区分大小写
strnatcmp($str1,$str2) 自然排序法比较区分大小写(主要是字符串中含有的数字比较,不分前后)
strnatcasecmp($str1,$str2) 自然排序比较不区分大小写
strncmp(string str1,strimg str2,int len) 指定从源字符串位置开始比较,
len是用来比较字符串中的前n个字符
PHP中常用的字符串比较方法: 按字节进行比较:strcmp()
和strcasecmp()
函数这两个函数区别是strcmp()
函数区分大小写,而strcasecmp()
函数不区分字符大小写,函数strnatcmp()
同上
例如:
$str1 = "编程使我快乐!";
$str2 = "编程使我快乐!";
$str3 = "teacher";
$str4 = "TEACHER";
echo strcmp($str1,$str2); //这两个字符串相等
echo strcmp($str3,$str4); //该函数区分大小写
echo strcasecmp($str3,$str4); //该函数不区分大小写
结果: 0 1 0
分析:如果两个字符串大小相等返回0, 函数1比函数2大则返回值大于0,函数1比函数2小则返回值小于0,如果大小写不一致strcmp函数返回1,strcasecmp函数返回0,因此strcmp函数可以用于用户登录用户名和密码的验证.
注意:自然运算中1比2小,而计算机序列中1比2大.
4.6 检索字符串
1.strstr()
函数查找指定的关键字(区分大小写)
语法:string strstr(string haystack,string needle);
- haystack:必要参数,指定从哪个字符串中进行搜索
- needle:必要参数,指定所搜对象,如果该参数是一个数值,那么将搜索与这个数值的ASCII值相匹配的字符.
2.strchr()
函数与其正好相反,该函数是从字符串后序的位置开始检索子串的.
3.substr_count()
函数检索子串出现的次数:语法:int substr__count(string haystack,string needle)haystack:指定字符串,needle:指定字符
4.7 替换字符串
替换字符串可以通过两个函数实现:
1.str_ireplace()
函数 当确定要替换的字符串时使用
2.substr_replace()
函数 不确定要替换的字符串使用(下标)
str_ireplace()函数
语法格式如下:mixed str_ireplace(mixed search,mixed replace,mixed subject [,int &count]),使用新的字符串(子串)替换原始字符串中被指定要替换的字符串。
说明:将所有在参数subject中出现的参数search以参数replace取代,参数count表示取代字符串执行的次数,本函数不区分大小写。如果要区分大小写可以使用 str_replace函数
substr_replace()函数
语法:string substr_replace(string str,string repl,int start,[int length])
说明:如果参数start设为负数,而参数length数值小于或等于start数值,那么length的值自动为0。
- str:原始字符串
- repl:替换后的新字符串
- start:制定替换字符串开始位置。正数从开头开始,负数从末尾开始,0表示从起始位置第一个字符
- length:可选参数,表示替换的长度,默认值是整个字符串,正数表示起始位置从字符串开头开始,负数表示起始位置从字符串末尾开始,0表示插入而非替代。
4.8 字符串格式化
php中字符串格式化分为多种,按照格式分为字符串格式化和数字字符串格式化。数字字符串格式化最常用。
number_format()函数用来将数字字符串格式化
语法:string number_format(float number [int num_decimal_places,][string dec_seperator,string thousands_separator]);
注意:该函数有4个参数:可以有1个,2个,4个。不能只给3个。
1.$number
:舍去小数点后面值,且第三位数字以逗号隔开。
2.num_decimal_places
:(可选)格式化到小数点后第num_decimal_places位。且每3位用逗号分开,
3.dec_seperator
:用来替代小数点'.';
4.thousands_seperator
:用来替代第3位数字隔开的逗号(,)。
例如:
$number = 111555444.3306;
echo number_format($number,2,'.','.');
一个参数的值:111,555,444
两个参数的值:111,555,444.33
四个参数的值:111.555.444.33
4.9分割字符串
explode()
函数:分割字符串,该函数将按照指定的规则对字符串进行分割,返回值为数组。
语法格式:array explode(string separator,string str[,int (limit)]);
1.separator:必要参数,指定分割的标识符,如果为空返回false,如果separator包含的值在str中找不到,那么explode函数将返回包含str单个元素的数组。
2.str:必要参数,指定将要被进行分割的字符串。
3.limit:可选参数,如果设置了limit参数,则返回的数组包含最多limit个元素,而最后的元素将包含str的剩余部分,如果limit参数是负数,则返回除了最后一个limit个元素外的所有元素。
5.0合成字符串
implode()
函数:可以将数组中的内容合成一个新字符串。
语法格式如下:string implode(string glue,array pieces)
1.glue:字符串类型,指定分隔符
2.pieces:数组配型,指定要被合并的数组。
说明:explode()函数和implode()函数是两个相对的函数,一个用于拆分一个用于合成。
以上是对字符串的基本操作分类的各种函数,重点