定义字符串:
可以通过单引号( ' )、双引号( " )、定界符( <<< )定义字符串
单双引号的区别:
解析器不会对单引号中的变量进行解析,而双引号则相反。如:
<?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,如果有不对的地方,欢迎大家指正!