常用的字符串处理函数:
(1)strlen(目标字符串):主要用来获取字符串的长度,返回值为字符的个数
案例:
<?php
$str="my name is xiaoqiang";
echo strlen($str);//结果为:20
//如果编码为gbk,一个汉字占用2个字符
$str="ab你好";
echo strlen($str);//结果:6
//如果编码为utf-8,一个汉字占用3个字符
$str="ab你好";
echo strlen($str);//结果:8
?>
(2)strtoupper(目标字符串):将目标字符串转换为大写
案例:
<?php
$str="abcd";
echo strtoupper($str);
结果:ABCD
?>
(3)strtolower(目标字符串)将目标字符串转换为小写
案例:
<?php
$str="ABCD";
echo strtolower($str);
结果:abcd
?>
(4)strrev(目标字符串):将目标字符串翻转
案例:
<?php
$str="abcd";
echo strrev($str);
结果:dcba
?>
(5)trim(目标字符串[,特殊字符])去除目标字符串首尾的空格和特殊字符
案例:
<?php
$str=" abcd ";
//在浏览器中看不出有什么区别
echo $str;
echo trim($str);
//我们可以通过计算字符串的长度来判断首尾的空格是否被去除
echo strlen($str);//字符串的长度为12
echo strlen(trim($str));//字符串的长度为4
?>
(6)ltrim(目标字符串):去掉目标字符串左边的空白字符
(7)rtrim(目标字符串):去除目标字符串右边的空白字符
(8)substr_count(目标字符串,小串);//计算小串在目标字符串中出现的次数
案例:
<?php
$str="this is my name name name ";
echo substr_count($str,"name");
结果为3
?>
(9)substr(目标字符串,开始位置[,截取字符的长度]):
主要用来从目标字符串中截取子字符串
案例:
<?php
参数1:目标字符串
参数2:字符串的开始位置,起始位置为0,为负则从字符串结尾的指定位置开始
参数3:字符串的长度,默认是直到字符串的结尾,为负则从字符串末端返回
①开始位置为正数,截取长度也是正数
$str="abcdedf";
echo substr($str,0,4);//结果:abcd
②开始位置为负数,截取长度为正数
$str="abcdedf";
echo substr($str,-3,4);//结果:edf
③开始位置为负数,截取长度也为负数
$str="abcdedf";
echo substr($str,-3,-1);//结果:ed
?>
(10)str_replace(搜索值,替换值,目标字符串);//字符串的替换函数
案例:
<?php
$str="this is my name name name ";
echo str_replace("name","<font color='red'>NAME</font>");//替换为红色
结果:this is my name name name
使用数组可一次性替换多个
$arr1=array("hello","world");
$arr2=array("你好","世界");
str_replace($arr1,$arr2,"hello world",$i);//$i计数器,代表替换了多少个
结果:你好,世界
?>
(11)md5(目标字符串);//MD5加密函数
注意:此加密函数不可逆,加密的字符串为32位字符串
案例:
<?php
$str="123";
echo md5($str);
结果:202cb962ac59075b964b07152d234b70
?>
base64_encode(string $str); //加密
base64_decode(string $str); //解密
(12)implode(连接符,目标数组);
主要用来将目标数组中的所有元素以某种连接符连接成一个字符串
案例:
<?php
$arr=array(
"姓名",
"电话",
"电子邮箱"
);
$str=implode("-",$arr);
echo $str;
结果:姓名-电话-电子邮箱
?>
(13)explode(分隔符,目标字符串);
主要用来将目标字符串以某种分隔符拆分为数组元素,并返回该数组
案例:
<?php
$str="one|two|three|four";
$arr=explode("|",$str);
结果:
array(
0=>one
1=>two
2=>three
3=>four
);
?>
(14)strstr(目标字符串,子字符串);
主要用于查找子字符串在目标字符串中第一次出现的位置,并返回从该位置到字符串结尾的所有字符,如果没有找到,则返回false
案例:
<?php
$email="zhuoweida@163.com";
$str=strstr($email,"@");
结果:@163.com
?>
(15)strrstr(目标字符串,子字符串);
主要用于查找子字符串在目标字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符,如果没有找到,则返回false
案例:
<?php
$str="姓名|电话|电子邮箱";
$substr=strrstr($str,"|");
结果:|电子邮箱
?>
(16)利用strrstr和substr函数可实现截取最后某个出现的字符后面的所有内容
案例:
<?php
$email="zhuoweida@163.com";
$str=substr(strrstr($email,"@"),1);
结果:163.com
?>
(17)substr_replace(目标字符串,新子字符串,字符串开始位置,字符串返回长度);
参数1:目标字符串
参数2:代表目标字符串中子字符串要被替换成何种字符串
参数3:字符串的开始位置,起始位置为0,为负则从字符串结尾的指定位置开始
参数4:可选,字符串返回的长度,默认直到字符串的结尾,为负则从字符串末端返回
案例:
<?php
echo substr_replace("abcdef","###",1);
结果:a###
echo substr_replace("abcdef","###",1,2);
结果:a###def
echo substr_replace("abcdef","###",-3,2);
结果:abc###f
echo substr_replace("abcdef","###",1,-2);
结果:a###ef
?>
(18)strpos(目标字符串,要定位的字符串);
主要用来查找子字符串第一次出现的位置,返回int类型的值
案例:
<?php
echo strpos("abcdef","c");
结果:2
?>
(19)strrpos(目标字符串,要定位的字符串);
主要用来查找子字符串最后一次出现的位置,返回int类型的值
案例:
<?php
echo strrpos("abcccdef","c");
结果:4
?>
(20)nl2br(目标字符串);
主要用来将目标字符串中的换行符\n转换为html换行符<br/> ,并返回转换后的字符串
案例:
<?php
echo nl2br("我是\n中国人");
//在浏览器中查看网页源代码发现如下信息:
我是<br/>
中国人
?>
(21)htmlspecialchars(目标字符串); //主要用于字符串到html的转换
主要用来将目标字符串中的一些特殊字符转化为html实体,并返回一个字符串
echo htmlspecialchars("<a href='www.baidu.com'>百度</a>");
若想在页面中显示:"<a href='www.baidu.com'>百度</a>",html应写为
"<a href='www.baidu.com'>百度</a>"
否则将只会在页面上显示一个 "百度" 链接
注意:要转换的特殊字符有如下:
& 转换为 &
" 转换为 "
< 转换为 <
> 转换为 >
标注:'&'等为html元素,'&'等为其显示的字符串
(22)htmlspecialchars_decode(目标字符串);
主要用来将目标字符串中的html实体转化为特殊字符,并返回一个字符串
htmlspecialchars_decode(目标字符串);
注意:转化html实体为特殊字符
&转换为&
"转换为"
<转换为<;
>转换为>;
(23)addslashes(目标字符串);
主要用于在目标字符串中的特殊字符前加上转义符"\",返回一个字符串
案例:
<?php
$str="this's my name";
echo $str;
//结果:this's my name
$str1=addslashes($str);
echo $str1;
//结果:this\'s my name
?>
注意:
1.默认情况下,在php.ini配置文件中magic_quotes_gpc为on,系统会对所有的$_GET、$_POST、$_COOKIE数据自动运行addslashes()函数,不会对已经被magic_quotes_gpc转义过的字符串使用addslashes(),因为这样会导致双层转义
2.php中的字符串向数据库进行写入时,为了避免数据库错误,需要对特殊字符进行转义,这些特殊字符主要包括:
①单引号
②双引号
③反斜线
④NULL
(24)案例:可以对magic_quotes_gpc()进行检测以便确定是否使用addslashes()函数
<?php
if(!get_magic_quotes_gpc()){
$username=addslashes($_POST['username']);
}else{
$username=$_POST['username'];
}
?>
(25)stripslashes(目标字符串):是addslashes()函数的反函数
案例:
<?php
$str="this\'s my name";
echo $str;
echo "<br/>";
echo stripslashes($str);
结果:
this\'s my name
this's my name
?>
(26)Ucfirst(目标字符串);
将字符串的第一个字符转换成大写
(27)Ucwords(目标字符串);
将字符串中每个单词转换为大写
htmlentities(目标字符串,指定模式,编码);//主要用于字符串与html间的相互转换
参数2:模式主要用来如何处理字符串中的引号
NET_COMPAT:转换双引号,忽略单引号,它是默认值
ENT_NOQUOTES:忽略双引号和单引号
ENT_QUOTES :转换双引号和单引号
此函数将所有的字符串都转换成html字符串,而htmlspecialchars()函数只是将字符串中的某些特殊字符转换成html格式
在应用htmlentities()函数对字符串到html的转换过程中,设置参数charset的字符集为"utf-8",可以避免在输出中文字符时出现乱码的问题,其前提是页面编码是utf-8
案例1:
<?php
$str='<table>
<tr>
<td></td>
</tr>
</table>';
echo htmlentities($str,ENT_QUOTES,"UTF-8")."<BR/>"; //设置转换的字符集为utf-8
?>
字符串与html相互转换的技术应用最广泛的地方就是输出数据库中的数据,例如,当数据库中存储的是一个可以运行程序的代码时,如果没有对数据进行转换而直接输出,那么输出的结果将是该程序的运行结果,而不是程序代码
str_shuffle(字符串);//打乱字符串中字符的顺序
案例:
<?php
$num=str_shuffle("123456789");
$nums=substr($num,0,4);
for($i=0;$i<4;$i++){
echo "<img src=images/".substr(strval($num),$i,1).".gif>";
}
?>
问题?
如何解决用substr()函数对中文字符串截取时的乱码?
使用substr()函数是按字节截取字符串的,在截取中文字符串时由于一个汉字由两个字符组成,所以如果只截取一个字符就会出现乱码
我们可以通过在substr()函数的基础上封装一个自定义函数,在进行截取之前判断其是中文字符串还是英文字符串,如果是中文字符串则每次截取两个字节,如果是英文字符串则每次截取一个字节,这样就不会出现乱码问题了
案例1:
function msubstr($str,$start,$len){ //$str指的是字符串,$start指的是字符串的起始位置,$len指的是截取的长度
$strlen=$start+$len; //$strlen存储字符串的总长度(字符串的起始位置+要截取的长度)
for($i=0;$i<$strlen;$i++){ //通过for循环语句,逐个读取字符串
if(ord(substr($str,$i,1))>0xa0){ //如果字符串中首个字节的ASCII码数值大于0xa0,则表示为汉字
$tmpstr.=substr($str,$i,2); //如果每次取出两位字符赋给变量 $tmpstr,即等于一个汉字$i++
$i++; //变量自动加1
}else{
$tmpstr.=substr($str,$i,1); //如果不是汉字,则每次取出一个字符赋给变量$tmpstr
}
}
return $tmpstr; //输出截取后的字符串
}
如何使用mb_substr()函数截取中文字符串?
通过mb_ssubstr()函数可以对中文字符串进行截取,并且不会出现乱码的问题,但是应用该函数,需要打开 extension=php_mbstring.dll扩展。
语法格式:
mb_substr(要截取的字符串,起始位置,截取长度,编码);
【php】字符串处理函数
最新推荐文章于 2024-09-11 00:04:15 发布