一.字符串的四种定义方式
字符串大小的上限: 2G
1.单引号定义
<?php
//单引号创建
$str = 'Friday';
// 1.单引号中的变量不能被解析
echo 'Today is $str '; //错误输出Today is $str
// 2.单引号中的特殊字符不能被解析出来
echo 'welcome to \n \r my shop'; //错误输出 welcome to \n \r my shop
// 在单引号创建字符串中出现单引号
echo 'welcome to \'my\' shop'; //输出 welcome to 'my' shop
// 在单引号创建字符串中出现转义符: \,连续写二个
echo 'welcome to \\my\\ shop'; //输出 welcome to \my\ shop
2.双引号定义
<?php
//双引号创建
$name = "Admin";
// 双引号中的变量可以被解析出来
echo "My name is {$name}"; //输出 My name is Admin
// 双引号中的特殊字符能被解析出来
echo " hello \n\r {$name}\\";
echo '<hr>';
3.heredoc定义: 相当于双引号创建字符串的加强版
<?php
echo <<< ABC
My name is <span style="color:red;">Admin</span>
ABC;
//输出 My name is Admin;其中Admin字体颜色是红色,可以用于添加HTML样式
4.nowdoc定义: 相当于单引号创建字符串的加强版
<?php
echo <<< 'NOW'
hello you
NOW;
二.字符串函数
1.打印输出函数
printf()
与vprintf()
,
// printf("模板","替换占位符")
// %d,%s:替换占位符
printf("select * from %s limit %d","user",5); //输出 select * from user limit 5
//多个占位符替换
vprintf("select * from %s limit %d",["user",5]);//输出 select * from user limit 5
sprintf()
与vsprintf()
//sprintf(): 返回格式化字符串,而不是输出
sprintf("select * from %s limit %d","user",5);
vsprintf("select * from %s limit %d",["user",5]);
// sprintf()与vsprintf():功能一致,传参不同
2.字符串与数组直接的转换操作:implode,explode,str_split,list
// implode(): 数组转换成字符串
echo implode(";",['阿','的','发','阿']); //输出 阿;的;发;阿
// explode():字符串转换数组
print_r(explode(">","1>2>3>4")); //打印 Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )
print_r(explode(', ', '周一, 周二, 周三, 周四, 周五', 4));
//explode第三个参数是切割成几个元素组成的数组
//打印 Array ( [0] => 周一 [1] => 周二 [2] => 周三 [3] => 周四, 周五 )
// str_split(): 把字符串转为数组,可指定数组元素的宽度
print_r(str_split('百度.cn', 3));
// 3表示一个数组下班3个字符,另一个中文占3个支付 打印 Array ( [0] => 百 [1] => 度 [2] => .cn )
// list():将一个索引数组中的元素,按顺序解析到独立变量中,不是函数
list($Monday, $Tuesday, $Wednesday) = explode(', ', '周一, 周二, 周三, 周四, 周五', 4);
echo $Monday, $Tuesday, $Wednesday; //输出 周一周二周三
3.字符串截取:substr
//字符串的截取
// substr($string, $start, $length)
echo substr('123456', 0), '<br>'; //输出 123456
echo substr('123456', 2), '<br>'; //输出 3456
echo substr('123456', 2, 2), '<br>'; //输出 34
echo substr('123456', -1), '<br>'; //输出 6
echo substr('123456', -3,2), '<br>'; //输出 456
4.字符串填充str_pad()
:将字符串填充到指定长度
// str_pad(string,length,pad_string,pad_type)
// tring :必需。规定要填充的字符串。
// length :必需。规定新的字符串长度。如果该值小于字符串的原始长度,则不进行任何操作。
// pad_string :可选。规定供填充使用的字符串。默认是空白。
// pad_type: 可选。规定填充字符串的哪边。
// pad_type可能的值:
// STR_PAD_BOTH - 填充字符串的两侧。如果不是偶数,则右侧获得额外的填充。
// STR_PAD_LEFT - 填充字符串的左侧。
// STR_PAD_RIGHT - 填充字符串的右侧。默认。
echo str_pad('day', 8, '*', STR_PAD_BOTH);// 输出 **day***
5.字符串替换
echo str_replace('|',"\\",'http:||myphp.edu|index0709.php');
echo '<hr>';
//获取替换次数
echo str_replace('day', 'T','$Monday, $Tuesday, $Wednesday', $count);
echo 'day被替换了' .$count . ' 次';
echo '<hr>';
$arr = ['佣金', '性别', '账号', '银行'];
echo str_replace($arr, '...', '高额佣金, 不行性别, 无需账号,银行随意');
echo '<hr>';
//个性化
echo str_replace($search, ['***','???', '$$$', '###'], '高额佣金, 不行性别, 无需账号,银行随意');
6.字符串剔除两边指定字符:trim
// 从二边删除指定的字符
$str = '1433898http:||myphp.edu|index0709.php site654143';
echo $str, '<br>';
echo trim($str, '143'), '<br>';
echo trim($str, '1..8'), '<br>';
echo trim($str, '1..4'), '<br>';
7.查询字符串在另一个字符串首次出现的位置:strpos
//默认总0开始
echo strpos('today is Wednesday', 'day'), '<br>'; //返回2
//从指定位置开始查询
echo strpos('today is Wednesday', 'day', 4), '<br>';//返回 15
8.获取字符在字符串中是否存在,如果是,返回该字符串及后面剩余部分:strstr
echo strstr("363799110@qq.com","@"), '<br>';
//加上第3个参数ture,则返回首次出现前面的字符串
echo strstr("363799110@qq.com","@",true), '<br>';