【小白笔记】PHP学习之路 (9) --字符串(1)

定义字符串:

        可以通过单引号( ' )、双引号( " )、定界符( <<< )定义字符串

    单双引号的区别:

        解析器不会对单引号中的变量进行解析,而双引号则相反。如:
        
<?php
	$url = "https://bbs.abc.cn";
	$rmd = "欢迎光临,讨论交流请至{$url}去往\n";  //解析器将会解析双引号中的变量和转义符,这里不加{}会报错,因为php支持中文变量名
	$rms = '欢迎光临,讨论交流请至$url去往\n';  //解析器不会解析单引号中的变量和转义符
	echo $rmd;
	echo $rms;
?>
        结果:
欢迎光临,讨论交流请至https://bbs.abc.cn去往
欢迎光临,讨论交流请至$url去往\n

        由于php要对双引号中的内容进行解析,所以执行双引号时相对来说速度会慢一些。
        注意,如果双引号中变量并不是在字符串末尾,那么需要用花括号括起来,否则解析器会将$后面一连串字符串作为变量名。

    定界符:

        用定界符定义的字符串可以跨行,也可以解析其中的变量及转义符。注意结束处必须顶格。
		$multi_line_str = <<<str
	字符串
	...
str;   //这里一定要顶格写
	echo $multi_line_str;

字符串处理函数:

字符串中的空格处理:

trim    删除字符串左右空格
ltrim   删除字符串左侧空格
rtrim   删除字符串右侧空格

字符串大小写转换:

strtolower   将字符串转换为小写
strtoupper   将字符串转换为大写
ucfirst           字符串的首字母大写
ucwords      每个单词的首字母大写
CSS中的 text-transform属性也可以实现一样的效果。

字符串填充函数:

str_pad("字符串", 长度, "填充内容", 填充的方向)
填充的方向: STR_PAD_BOTH   左右路两侧进行填充,如果填充为奇数,则右侧多填充
                         STR_PAD_LEFT    从左侧填充
                        STR_PAD_RIGHT    从右侧填充
                        如果长度小于原字符串长度,则不会进行填充。默认填充方向为右侧。
	$str = '  hello world ';
	echo str_pad(trim($str),35,'+');

输出结果:
hello world++++++++++++++++++++++++

修改一下,从两侧填充:
	$str = '  hello world ';
	echo str_pad(trim($str),16,'+',STR_PAD_BOTH);  //填充后长度改为16

结果就是这样(可以看见右侧多填充了一个'+'):
++hello world+++

字符串顺序翻转函数:

strrev()  

	$edu = 'study';
	echo strrev($edu);

yduts

md5加密:

md5()      用于对要存储到 数据库的 数据进行加密 
一个小实例:
<?php
	$pwd = 'passwordtest';
	if(@md5($_GET['pwd'])==md5($pwd)){
		echo "登录成功";
	}else{
?>
<form action="" method="get">
	用户名:<input type="text" name="uname"/><br/>
	密码:<input type="password" name="pwd"/><br/>
	<input type="submit" value="登录"/><br/>
</form>
<?php
}?>

格式化金额字符串函数:

number_format("字符串", 小数位数, '小数点[可选]', '千位分隔符[可选]')
	$number1 = '1524549781243';
	echo number_format($number1,3)

1,524,549,781,243.000

字符串拆分成数组:

explode("拆分依据的字符串", "拆分的字符串", "返回的数组元素的数目[可选]")
	$str = "dsa ash .s 567 asna_sca";
	$arr = explode(' ',$str);
	print_r($arr);


结果:
Array ( [0] => dsa [1] => ash [2] => .s [3] => 567 [4] => asna_sca )

数组元素组合成字符串:

implode("连接字符串[可选]", 数组)   相当于explode的“反函数”,别名join()。
	$str1 = implode('|', $arr);
	var_dump($str1);

结果:
string 'dsa|ash|.s|567|asna_sca' (length=23)

字符串输出函数:

echo()    输出一个或多个字符串,严格来讲echo不是函数而是关键字,可以使用简化语法,即不用括号。
print()     也是输出字符串,但不支持逗号分隔多个显示变量的语法。
                  Tips:echo执行性能高于print,且更易用,因此一般不使用print。
printf ()    格式化输出字符串。
print_r ()   打印变量的值,可用于数组和对象。
	$url = "https://bbs.rainmeter.cn"."<br/>";
	$arr = array("Peter","Quagmire","Joe");
	print_r($url);
	print_r($arr);

结果:
https://bbs.rainmeter.cn
Array ( [0] => Peter [1] => Quagmire [2] => Joe )


<?php
	$price = '200.75';
	$num = 437;
	$name = '水晶头';
	printf('材料名称:%s  数量:%d  总价:%.4f', $name, $num, $price);
?>

结果:
材料名称:水晶头 数量:437 总价:200.7500

如果想用同一个变量以多种格式输出,可以使用 %数字\$   的形式:
<?php
	$num1 = 23;
	$num2 = 12;
	printf("数量:%1\$u %2\$u 单价:%1\$.2f %2\$.3f", $num1, $num2);
?>

结果:
数量:23 12 单价:23.00 12.000

字符串的截取:

substr(字符串, 开始截取的位置, 截取后的总长度)   

    对字符串进行指定数量的截取。

	$url = "https://bbs.rainmeter.cn"."<br/>";
	$str = substr($url, 8, 13);
	echo $str;

结果:
bbs.rainmeter

也可以反向截取:
	$url = "https://bbs.rainmeter.cn";
	$str = substr($url, -12);
	echo $str;

结果:
rainmeter.cn

strchr() /strstr()

    后者是前者的别名,在一个字符串中查找另一个字符串(第一次出现,区分大小写),找到则返回从该字符串开始至结尾的字符串,找不到则返回假。

	$url = "https://bbs.rainmeter.cn";
	$str = strchr($url,"rain");
	$str1 = strstr($url,"bbs");
	$str2 = strstr($url,"abc");   //找不到,返回false,在网页上不显示
	echo $str,'<br/>',$str1,'<br/>',$str2;
	var_dump($str2);

结果:
rainmeter.cn
bbs.rainmeter.cn
boolean false


stristr()和strrchr()

    如果想查找时 不区分大小写 ,可以使用 stristr ()。
    strrchr()    在一个字符串中查找另一个字符串,返回最后出现处到结尾的字符串。

strpos()和stripos()

    前者在字符串中查找字符串( 区分大小写),返回首次出现的位置。后者 不区分大小写

strrpos() 

    从后面查找,功能与strpos()相同 。 

strtok()

    通过字符串把主字符串进行拆分。一次返回“一段”:
例如:
	$some_str = "abc,def,hij,0,klm,nop,qrs";
	$s = strtok($some_str,',');
	while($s){
		echo $s."<br/>";
		$s = strtok(',');
	}
	var_dump(!'0');  //由于'0'==false,因此在拆分到0的地方退出循环

结果:
abc
def
hij
boolean true

如果不想在‘0’处停止,可以使用全等判断:
while($s!==false){

修改后的结果就是这样:
abc
def
hij
0
klm
nop
qrs
boolean true

parse_str()   

    把字符串拆分成变量。
	$url = "http://www.nothing.com.hk?uname=zhangsan&age=33&sex=boy";
	$u_msg = substr($url,(strpos($url,'?')+1));
	parse_str($u_msg);
	echo "Welcome to Nothing,username:".$uname." age:".$age." sex:".$sex;

结果:
Welcome to Nothing,username:zhangsan age:33 sex:boy

chuck_split()

    把字符串按指定大小拆分,可指定拆分后每个字符串的长度和连接符,默认是空格。
	$url = "http://www.nothing.com.hk?uname=zhangsan&age=33&sex=boy";
	echo chunk_split($url,3,'--');

结果:
htt--p:/--/ww--w.n--oth--ing--.co--m.h--k?u--nam--e=z--han--gsa--n&a--ge=--33&--sex--=bo--y--


吐槽一下,字符串函数可真多.....抓狂 .一次记不完,下一篇再继续吧。奋斗
以上均为个人理解,初学php,如果有不对的地方,欢迎大家指正!微笑
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值