PHP 字符串操作

PHP学习笔录 字符串操作

一、去掉首尾空格以及其他特殊字符

1.trim()函数的使用

说明:trim() 函数是用于除去字符串首尾空格和特殊字符,并返回去掉空格和特殊字符后的字符串。

格式:string trim(string str,[string charlist]);

参数介绍:str是要操作的字符串对象;参数charlist为可选参数,指定要从字符串中删除的特殊字符,如果不设置参数,则所有可选的字符都将被删除。

trim()函数的参数charlist的可选参数
可选值说明可选值说明
\0null,空值\x08垂直制表符
\ttab,制表符\r回车符
\n换行符" "空格

注意:除了以上默认的charlist的可选值外,也可以在charlist参数中提供要去除的特殊字符。

例子:

<?php

$str = "\r\r(:@_@ 中间的字符串 @_@:)       ";

echo trim($str);

echo "<br>";

echo trim($str, "\r\r(: :)");

?>


结果显示:

(:@_@ 中间的字符串 @_@:)

@_@ 中间的字符串 @_@


对应只删除左边和右边的函数:ltrim()和rtrim();  小测试了下:特殊字符需要完全匹配,否则也不会删除。

 

二、转义字符

1.addslashes()函数的使用

说明:addslashes() 函数是用于为字符串加入反斜线‘\’。

格式:string addslashes(string str);

参数介绍:str是要操作的字符串对象。

2.stripslashes()函数的使用

说明:stripslashes() 函数是用于为字符串加入反斜线‘\’。

格式:string stripslashes(string str);

参数介绍:str是要操作的字符串对象。

使用:

<?php
$str = "select from table where name = 'jore'";
echo $str."<BR>";
$a = addslashes($str);
echo $a."<br>";
$b = stripslashes($a);
echo $b."<BR>";
?>

结果显示:

select from table where name = 'jore'
select from table where name = \'jore\'
select from table where name = 'jore'

注:当字符串少的时候可以使用手动转义,字符串较大时,采用自动函数转义。但是,所有数据插入数据库之前,有必要应用addslashes()函数进行字符转义,以免特殊字符未经转义而在插入数据库时出现错误。

3.addcslashes()函数的使用

说明:addcslashes() 函数是用于为字符串加入反斜线‘\’。

格式:string addcslashes(string str, string charlist);

参数介绍:str是要操作的字符串对象,charlist是在那些特殊字符前加入反斜线'\',如果参数charlist中包含\n、\r等字符,将以C语言风格转换,而其他非字母且ASCII码低于32或高于126的字符均转换成8进制表示。

4.stripcslashes()函数的使用

说明:stripcslashes() 函数是用于为字符串加入反斜线‘\’,还原addcslashes()函数的转义。

格式:string stripcslashes(string str);

注:在缓存文件中,一般对缓存数据的值采用addcslashes()函数进行指定范围的转义。

参数介绍:str是要操作的字符串对象。

<?php
$str = "PHP是一门脚本语言";
echo $str."<BR>";
$a = addcslashes($str, "是一门脚本语言");
echo $a."<br>";
$b = stripcslashes($a);
echo $b."<BR>";
?>

结果显示:

PHP是一门脚本语言
PHP\346\230\257\344\270\200\351\227\250\350\204\232\346\234\254\350\257\255\350\250\200
PHP是一门脚本语言


三、获取字符串的长度

1.strlen()函数的使用

说明:strlen()函数主要是用来获取字符串str的长度。

格式:int strlen(string str)

参数介绍:str是要操作的字符串对象。

注:汉子占两个字符,数字、英文、小数点、下划线和空格占一个字符。

<?php
	echo strlen("php. 是脚本语言");
?>

显示结果:

15

 

四、截取字符串

1.substr()函数的使用

说明:substr()函数是用来截取指定字符串中指定长度的字符。

格式:string substr(string str, int start, [int lenght]);

参数介绍:str是指定的操作字符串;start是指定开始截取字符串的位置,如果参数为负数则从字符串末尾开始截取;lenght可选参数,指定截取字符的个数,如果lenght为负数,则表示取到倒数第lenght个字符。

<?php
	$s = "还记得很久前的暑假我们在看着他们的故事,其实每个人都在编写着每个人的故事,愿你们都能顺着故事走下去。而今,我的故事还没开场却已经散场了,就这么算了吧!";
	echo substr($s, 0)."<BR>";
	echo substr($s, 4, 14)."<BR>";	
	echo substr($s, -4, 4)."<BR>";
	echo substr($s, 0, -4)."<BR>";
?>

显示结果:

还记得很久前的暑假我们在看着他们的故事,其实每个人都在编写着每个人的故事,愿你们都能顺着故事走下去。而今,我的故事还没开场却已经散场了,就这么算了吧!
��得很久前
�!
还记得很久前的暑假我们在看着他们的故事,其实每个人都在编写着每个人的故事,愿你们都能顺着故事走下去。而今,我的故事还没开场却已经散场了,就这么算了��

第二个例子与字符串长度一起使用(有是有布局有限,需要对一些超长文本进行部分显示):

<?php
	$s = "还记得很久前的暑假我们在看着他们的故事,其实每个人都在编写着每个人的故事,愿你们都能顺着故事走下去。而今,我的故事还没开场却已经散场了,就这么算了吧!";
	if (strlen($s) > 30) {
		echo substr($s, 0, 30)."..."."<br>";
	} else {
		echo $s;
	}
?>

显示结果:

还记得很久前的暑假我们在看着他们的故事,其实每个人都在编写着每个人的故事,愿你们都能顺着故事走下去。而今,我的故事还没开场却已经散场了,就这么算了��
还记得很久前的暑假我...

注:使用substr()函数截取中文字符串时,如果截取的字符串个数是奇数,那么就会导致截取的中文字符串出现乱码,因为一个中文字符串由两个字节组成。所以substr()函数适用于对英文字符串的截取,如果想要对中文字符串进行截取,而且要避免出现乱码,最好的方法就是应用substr()编写一个自定义函数。

 

五、比较字符串

1.按字节进行字符串的比较

两种按字节进行字符串比较的方式分别是:strcmp()函数、strcasecmp()函数。

两种方式的区别:strcmp()函数区分字符的大小写,而strcasecmp()函数不区分字符的大小写,两种方式的用法基本相同。

下面介绍下strcmp()的使用方法:

格式:int strcmp(string str1, string str2)

参数介绍:str1和str2是两个用来相互比较的字符串。

比较结果:如果str1和str2相等,则函数返回0,如果str1大于str2,则函数返回值大于0,如果str1小于str2,则函数返回值小于0。

<?php
	$str1 = "明天你好!";
	$str2 = "明天你好!";
	$str3 = "my hours";
	$str4 = "MY HOURS";
	echo strcmp($str1, $str2);
	echo strcmp($str3, $str4);
	echo strcasecmp($str3, $str4);
?>

显示结果:

010

2.按自然排序法进行字符串的比较

strnatcmp()函数是比较的是字符串中的数字部分,将字符串中的数字按照大小进行比较。(注:此函数是区分大小写的)

格式:int strnatcmp(string str1, string str2)

参数介绍:str1和str2是两个用来相互比较的字符串。

比较结果:如果str1和str2相等,则函数返回0,如果str1大于str2,则函数返回值大于0,如果str1小于str2,则函数返回值小于0。

特别注意:在自然运算法则中,2比10小,而在计算机序列中,10比2小,因为10中的第一位数字是1,它小于2

<?php
	$str1 = "str2.jpg";
	$str2 = "str10.jpg";
	$str3 = "mrsoft1";
	$str4 = "MRSOFT2";
	echo strcmp($str1, $str2);
	echo strcmp($str3, $str4);
	echo strnatcmp($str1, $str2);
	echo strnatcmp($str3, $str4);
?>

显示结果:

11-11

小秘籍:按照自然排序法进行比较,还可以使用另一个与strnatcmp()函数作用相同,但不区分大小写的strnatcasecmp()函数。

3.指定从源字符串的位置开始比较

strncmp()函数用来比较字符串中的前n个字符。

格式:int strncmp(string str1, string str2, int len)

参数介绍:str1和str2是两个用来相互比较的字符串,len是每个字符串中参与比较的字符位数。

比较结果:如果str1和str2相等,则函数返回0,如果str1大于str2,则函数返回值大于0,如果str1小于str2,则函数返回值小于0。

<?php
	$str1 = "I like php !";
	$str2 = "i am fine !"
	echo strncmp($str1, $str2, 2);
?>

显示结果:

-1

由此可以看出:strncmp()函数也是区分大小写的。

 

六、检索字符串
1.使用strstr()函数查找指定的关键字

strstr()函数获取指定的字符串在另一个字符串中首次出现的位置到后者末尾的子字符串。

格式:string strstr(string haystack, string needle)

参数介绍:haystack必要参数,指定从哪个字符串中进行搜索。needle必要参数,指定搜索的对象,如果该参数是一个数值,那么将搜索与这个数值的ASCII值相匹配的字符。

比较结果:如果执行成功,则返回获取的子字符串(存在相匹配的字符);如果失败则返回false。

<?php
	$str1 = "检索字符串,检索字符串;检索字符串!";
	$str2 = ";";
	$str3 = strstr($str1, $str2);
	echo $str3;
	if (str3 != ";") {
		echo "<br>";
		echo $str3;
	}
?>

显示结果:

;检索字符串!
;检索字符串!

小秘密:strchr()函数与其正好相反,该函数是从字符串后序的位置开始检索子字符串的。

2.使用substr_count()函数检索子字符串出现的次数。

格式:int substr_count(string str1, string needle)

参数说明:haystack指定从哪个字符串中进行搜索。needle指定搜索的对象

<?php
	$str1 = "今日我放假,明日我去上班";
	echo "<br>";
	echo substr_count($str1, "日");
?>

显示结果:

2

注:检索子字符串出现的次数一般常用于搜索引擎中,针对子字符串在字符串中出现的次数进行统计,便于用户第一时间掌握子字符串在字符串中出现的次数。

 

七、替换字符串
1.str_ireplace()函数的使用

说明:str_ireplace()是用来使新的字符串替换原始字符串中被指定要替换的字符串。(注:本函数不区分大小写)

格式:mixed str_ireplace(mixed search, mixed replace, mixed subject, [int &count])

参数介绍:search必要参数,指定需要查找的字符串。replace必要参数,指定替换的值。subject必要参数,指定查找的范围。count可选参数,获取执行替换的次数。

<?php
	$str = "还记得很久前的暑假我们在看着他们的故事,其实每个人都在编写着每个人的故事,愿你们都能顺着故事走下去。而今,我的故事还没开场却已经散场了,就这么算了吧!";
	$str1 = "故事";
	$str2 = "生活";
	echo str_ireplace($str1, $str2, $str);
	echo "<br>";
?>

显示结果:

还记得很久前的暑假我们在看着他们的生活,其实每个人都在编写着每个人的生活,愿你们都能顺着生活走下去。而今,我的生活还没开场却已经散场了,就这么算了吧!

注意:该函数执行时不区分大小写,如果需要对大小写加以区分,可以使用str_replace()函数。字符串替换技术常用于搜索引擎中的关键字处理。可以使用字符串替换技术将搜索到的关键字进行颜色、字体的更改,便于读者查看。

<?php
	$str = "还记得很久前的暑假我们在看着他们的故事,其实每个人都在编写着每个人的故事,愿你们都能顺着故事走下去。而今,我的故事还没开场却已经散场了,就这么算了吧!";
	$str1 = "故事";
	$str2 = "生活";
	echo str_ireplace($str1, "<font color='#FF0000'>".$str2."</font>", $str);
	echo "<br>";
?>

显示的结果:

还记得很久前的暑假我们在看着他们的生活,其实每个人都在编写着每个人的生活,愿你们都能顺着生活走下去。而今,我的生活还没开场却已经散场了,就这么算了吧!

2.substr_replace()函数的使用

说明:对指定字符串中的部分字符串进行替换。

格式:string substr_replace(string str, string repl, int start, [int lenght])

参数介绍:str指定要操作的原始字符串。repl指定替换后的新字符串,start指定替换字符串开始的位置。正数表示起始位置从字符串开头开始;负数表示起始位置从字符串的结尾开始;0表示起始位置从字符串中的第一个字符。lenght可选参数,指定替换的字符串长度;默认值是整个字符串;正数表示起始位置从字符串开头开始;负数表示起始位置从字符串的结尾开始;0表示插入而非替换。

注意参数的使用:如果参数start设置为负数,而参数数值小于或者等于start的值,那么lenght的值自动为0

<?php
	$str = "用今日的辛勤工作,换明日的双倍回报!";
	$rel = "百倍";
	echo substr_replace($str, $rel, 26, 4);
?>

结果显示:

用今日的辛勤工作��百倍明日的双倍回报!

 

八、格式化字符串

1.number_format()函数的使用

说明:number_format()函数是用来将数字字符串格式化。

格式:string number_format(float number,[int num_decimal_places, string dec_seperator, string thousands_separator])

参数介绍:number_format()函数可以有一个,两个或者是4个参数,但是不能是三个。一个参数number的时候,number格式化后,会舍去小数点后面的数值,每三位以‘,’分开。两个参数时,number格式化后会到小数点后的第num_decimal_places位,每三位以‘,’分开。4个参数的时候,number格式化后会到小数点后的第num_decimal_places位,每三位以thousands_separator分开,小数点用dec_seperator替换。

<?php
	$str = "1868.98";
	echo number_format($str);
	echo "<br>";
	echo number_format($str, 2);
	echo "<br>";
	$str1 = "11886655.760055";
	echo number_format($str1, 2, '.', '.');
?>

显示结果:

1,869
1,868.98
11.886.655.76


九、分割字符串

1.explode()函数的使用

说明:explode()函数按照指定的规则对一个字符串进行分割,返回数组。

格式:array explode(string separator, string str, [int limit])

参数说明:separator必要参数,指定分割的标识符。如果separator为空字符串(“”),explode()将返回false;如果separator所包含的值在str中找不到,那么explode()函数将返回包含str单个元素的数组。str必要参数,指定将要被进行分割的字符串。limit可选参数,如果设置了limit参数,则返回的数组包含最多limit个元素,而最后的元素将包含str的剩余部分;如果limit参数是负数,则返回除了最后的-limit个元素的所有元素。

<?php
	$str = "php@ios@asp@net@jsp";
	$str_arr = explode("@", $str);
	print_r($str_arr);
	echo "<br>";
	echo $str_arr[0]."<br>";
	echo $str_arr[1]."<br>";
	echo $str_arr[2]."<br>";
	echo $str_arr[3]."<br>";
	echo $str_arr[4]."<br>";
?>

显示结果:

Array ( [0] => php [1] => ios [2] => asp [3] => net [4] => jsp ) 
php
ios
asp
net
jsp

数组的输出方式:print_r($str_arr);等价于echo $str_arr[0];echo $str_arr[1];...


十、合成字符串

1.implode()函数的使用

说明:implode()函数可以将数组的内容组合成一个新的字符串。

格式:string implode(string glue, array pleces)

参数说明:glue是字符串类型,指定的分隔符;pleces是数组类型,指定要被合并的数组。

<?php
	$str = "php@ios@asp@net@jsp";
	$str_arr = explode("@", $str);
	print_r($str_arr);
	echo "<br>";
	$s = implode("#", $str_arr);
	print_r($s);
	echo "<br>";
?>

显示结果:

Array ( [0] => php [1] => ios [2] => asp [3] => net [4] => jsp ) 
php#ios#asp#net#jsp


注意:implode()函数和explode()函数是两个相对的函数,一个用于合成,一个用于分隔。

 

初学PHP语言,记录每日学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值