字符串的定义
定义字符串 使用 单引号 ''或 双引号 "" ;
1、单引号'';
$name = '张三';
echo $name ;
//得到的结果就是:张三;
$age = 18;
$name = '张三',$age;
echo $name;
//返回的结果就是:张三$age;
总结:由此可见''单引号不能解析变量,,这么理解!如果需要解析变量里面的变量,就必须使用双引号;
2、双引号"";
$age = 18;
$name = "张三,$age";
echo $name;
//返回的结果就是:张三,18;
总结:双引号能干些单引号不能干的事情!;
特殊字符的解析;
先上代码:
$name ="\张三\";
echo $name;
//结果 \张三\;
//但是我想解析反斜线 怎么办呢?
//只需要在特殊字符前加上"\"即可 ,定界符(转义符)即可。
$name ="\\张三\\";
echo $name;
总结:貌似简单的定界符,在使用起来的时候,会遇到一些问题,比如说,需要转义的多个字符,难免自己会多写,或是少写,导致报错的问题出现,所以php还提供了一些双引号的升级版
提供使用!
//1。heredoc
基本语法:<<<标识符开始
echo 需要解析的内容;
标识符结尾;
例:
$name="张三";
echo <<< my_name
<a href="" style='color:red;'>{$name}</a>
my_name;
此方法非常适用于php+html代码混编模式 既然提供""双引号升级版,那肯定就有单引号升级版咯!
//2、nowdoc 唯一区别需要在标识符上加上单引号''
$name="张三";
echo <<< 'my_name'
<a href="" style='color:red;'>{$name}</a>
my_name;
字符串常用函数
printf() 、vprintf() 、sprintf() 、 vsprintf()
printf()输出格式化的字符串;
//语法要求:printf('内容',标识符+);
$name ="张三";
printf("我的名字叫%s",$name);
//输出,我的名字叫张三;
/*
总结:%s 代表的占位符。就好比去上厕所,占个坑一样的!s代表的是字符串的意思!
当然还有%d 代表整数;
*/
vprintf() 和printf()差不多,只是后面的参数列使用的是数组形式
$table='users'; //表名
$limit=10; //返回条目
vprintf('SELECT * FROM `%s` LIMIT %d', [$table, $limit]);
//输出:SELECT * FROM `users` LIMIT 10
//总结,和printf一样,参数列表的数组是依此填充!!
sprintf()返回格式化的字符串(与printf()类似,不输出,返回格式化后的字符串)
$table='users'; //表名
$limit=10; //返回条目
$sql = sprintf('SELECT * FROM `%s` LIMIT %d', $table, $limit);
//输出:SELECT * FROM `users` LIMIT 10
vsprintf() 返回格式化的字符串(与与sprintf()功能相同,区别在于后面变量使用数组。)
$table='users'; //表名
$limit=10; //返回条目
$sql = sprintf('SELECT * FROM `%s` LIMIT %d', [$table, $limit]);
//输出:SELECT * FROM `users` LIMIT 10
其他函数
file_put_contents()
把一个字符串写入文件中
// file_put_contents(文件,数据,如何打开/写入文件,规定文件句柄的环境)
echo file_put_contents("sites.txt","我"); //默认覆盖写入,返回字符长度
// 使用 FILE_APPEND 标记,可以在文件末尾追加内容
// LOCK_EX 标记可以防止多人同时写入
echo file_put_contents("sites.txt","要学习", FILE_APPEND | LOCK_EX);
将字符串转换成数组 implode() join() 把数组元素组合为一个字符串
$arr=['学生1','学生2','学生3','学生4','学生5','学生6'];
//将数组合为字符串,每个用“|”号分开
echo implode('|', $arr);
echo '<br>';
echo join('|', $arr);
// 输出:
//学生1|学生2|学生3|学生4|学生5|学生6
//学生1|学生2|学生3|学生4|学生5|学生6
//两个函数输出结果相同
explode()
字符串打散为数组
// explode(在哪里分割字符串,要分割的字符串,返回的数组元素的数量)
print_r(explode('|','学生1|学生2|学生3|学生4|学生5|学生6'));
// 返回数组:Array ( [0] => 学生1 [1] => 学生2 [2] => 学生3 [3] => 学生4 [4] => 学生5 [5] => 学生6 )
substr()
返回字符串的一部分
//语法:substr($string, $start, $length)
echo substr('ABCDEFG', 0), '<br>'; //输出全部
echo substr('ABCDEFG', 1), '<br>'; //输出BCDEFG
echo substr('ABCDEFG', 3), '<br>'; //输出DEFG
echo substr('ABCDEFG', 3,2), '<br>'; //输出DE(第3位开始取两位)
//注意:UTF8 中文1个字为3个字节
echo substr('我要学习', 3), '<br>'; //输出要学习
str_split()
把字符串分割到数组中
//不写分割长度默认是 1
print_r(str_split('ABCDEF'));
// 输出:Array ( [0] => A [1] => B [2] => C [3] => D [4] => E [5] => F )
print_r(str_split('ABCDEF', 2));
// 输出:Array ( [0] => AB [1] => CD [2] => EF )
str_getcsv()
解析 CSV 格式字段的字符串,并返回包含所读取字段的数组。
基本语法:str_getcsv('string','separator',enclosure,escape)
string:
必须,规定要填充的字符串;separator:
必需,固定新的字符串长度,如果该值小于字符串的原始长度,则不进行任何操作!enclosure:
可选,规定供填充使用的字符串,默认是空白escape:
可选,规定填充字符串那边;可能值 STR_PAD_BOTH 字符串2边,STR_PAD_LEFT :左边 STR_PAD_RIGHT:右边
$str = "字符";
//字符不满10位在前面用“-”补齐
echo str_pad($str,10,"-",STR_PAD_LEFT),'<br>';
//输出:----字符
//字符不满10位在后面用“-”补齐
echo str_pad($str,10,"-",STR_PAD_RIGHT ),'<br>';
//输出:字符----
//字符不满10位在两边用“-”补齐
echo str_pad($str,10,"-",STR_PAD_BOTH ),'<br>';
//输出:---字符--
str_replace()
字符串替换
$css_pach='myapp/php_pro/css/style.css';
// 将以上CSS路径地址中的“/”替换“//”,并自动创建变量$i统计替换次数
echo str_replace('/', '//',$css_pach,$i);
echo '<br>查找并替换了:'.$i.'次';
// 输出:myapp//php_pro//css//style.css
// 查找并替换了:3次
// 字符串替换应用场景2
$str_key = ['交友', '广告', '直播', '带货'];
//find 查找的值支持数组
echo str_replace($str_key, '**', '广告代理, 直播教学, 免费带货,异性交友');
// 输出:**代理, **教学, 免费**,异性**
trim()
移除字符串两侧的空白字符或其他预定义字符。
$str = "...admin ";
echo $str;
// 原始输出:...admin
echo "<br>";
echo trim($str, ".");
// 移除后输出:admin
类似函数
ltrim() 函数 移除字符串左侧的空白字符或其他预定义字符。
rtrim() 函数 移除字符串右侧的空白字符或其他预定义字符。
strpos()
查找字符串在另一字符串中第一次出现的位置。
$str1='hello php.cn';
$str2='php';
echo strpos($str1, $str2);
// 输出:6
strstr()
搜索字符串在另一字符串中是否存在
echo strstr('admin@php.cn','@');
// 输出:@php.cn
echo (strstr('admin@php.cn','@')) ? '存在' : '不存在' ;
// 输出:存在
echo (strstr('admin@php.cn','#')) ? '存在' : '不存在' ;
// 输出:不存在
总结:
了解了字符串的四种创建方式和使用方法
系统字符串函数逐个测试、学习,用法基本掌握,项目中灵活应用还需要实战加强。