【php】字符串处理函数

	常用的字符串处理函数:

(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="[email protected]";
		$str=strstr($email,"@");

		结果:@163.com		
		?>

(15)strrstr(目标字符串,子字符串);
			
	主要用于查找子字符串在目标字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符,如果没有找到,则返回false

案例:
		<?php
		$str="姓名|电话|电子邮箱";
		$substr=strrstr($str,"|");

		结果:|电子邮箱		
		?>

(16)利用strrstr和substr函数可实现截取最后某个出现的字符后面的所有内容
	
案例:
		<?php
		$email="[email protected]";
		$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】字符串处理函数)