0709-作业
- 字符串大小的上限:2G
一、创建与定义字符串的四种方式
4.1 单引号’’来创建字符
单引号中的变量不能解析
可以用.来连接变量
单引号中的特殊字符也不能被解析
可以用转义字符’\’来输出特殊字符,\’,\
<?php
$str = 'string';
//单引号中的变量不能被解析,单引号中的特殊字符也不能被解析
echo '这是一个\n\r' . $str;
echo '<hr>';
echo '这是一个\'' . $str . '\'';
4.2 双引号””来创建字符
双引号中的变量能解析
为了开发时更加规范,变量要用{}括起来
双引号可以解析特殊字符
<?php
$str = "string";
echo "这是一个\n\r {$str}";
echo '<hr>';
echo "这是一个\"" . $str . "\"";
4.3 heredoc <<<可以看作是双引号的加强版
- heredoc中的字符串不需要双引号定界符,适合写模板
- <<< 界定名 …内容… 界定名
- 界定名可以自定义
<?php
$str = "stringcode";
echo <<< MANYCODE
这里面填充大量的文本 {$str} sdf \\n
MANYCODE;
4.4 nowdoc:可以看作是单引号字符串的加强版
- nowdoc 输出的内容不用单引号包住,但是界定符(第一个,结束的不用)要用单引号扩起来,否则默认会识别为heredoc双引号的格式。
<?php
$str = "stringcode";
echo <<< 'MANYCODE'
这里面填充大量的文本 {$str} sdf \\n
但是同样无法翻译变量和特殊字符
MANYCODE;
二 、字符串常用函数
1. printf()
和vprintf()
printf()按照指定的格式模板输出,语法:printf(‘模板’,将模板中的占位符替换)
vprintf()功能与printf()一样,只是参数不一样,后面传的是个数组
<?php
$str1 = 'admin';
$str2 = '白金级';
printf('欢迎%s登录,您的权限级别为%s。', $str1, $str2);
echo '<hr>';
vprintf('欢迎%s登录,您的权限级别为%s。', [$str1, $str2]);
echo '<hr>';
$table = 'users'; //表名
$limit = 10; //返回条目
vprintf('SELECT * FROM `%s` LIMIT %d', [$table, $limit]);
//输出:SELECT * FROM `users` LIMIT 10
2. sprintf()
和vsprintf()
sprintf()返回格式化的字符串,与printf()类似,但不会输出(printf包含了输出),只返回格式化后的字符串
vsprintf()与sprintf()功能相同,区别在于后面变量使用数组。
<?php
$sql = sprintf('SELECT * FROM `%s` LIMIT %d', 'goods', 15);
echo $sql;
file_put_contents('temp.txt', $sql);
echo '<hr>';
$sql = vsprintf('SELECT * FROM `%s` LIMIT %d', ['goods', 20]);
echo $sql;
file_put_contents('temp.txt', $sql);
file_put_contents()
是把一个字符串写入文件中。
3. implode()
和explode()
把数组元素<->字符串之间组合和拆分转换
implode():将数组拼装成字符串, 同名函数叫
join()
,效果一模一样explode():将字符串转为数组
<?php
$arr = ['星期一', '星期二', '星期三', '星期四', '星期五'];
//将数组合为字符串,每个用“---”号分开
echo implode('---', $arr) . "<hr>";
print_r(explode(',', '大家好,今天是星期一,开例会'));
4. list()
将索引数组中的元素解析到独立变量中
- php要7.0以上
<?php
$arr = array('星期一', '星期二', '星期三', '星期四', '星期五');
//将数组合为字符串,每个用“---”号分开
list($a, $b, $c, $d, $e) = $arr;
echo $c . $e;
5.substr()
截取子字符串
<?php
//substr($string,$start,$length)
echo substr('stringdemo', 0), '<hr>';
echo substr('stringdemo', 2), '<hr>';
echo substr('stringdemo', 2, 2), '<hr>';
echo substr('stringdemo', -3, 3), '<hr>';
6.str_split()
将字符串分割到数组中,可指定数组元素的宽度
<?php
print_r(str_split('examplestring', 2));
7.str_getcsv()
:解析 CSV 格式字段的字符串,并返回一个包含所读取字段的数组
<?php
$str = file_get_contents('test.csv');
$arr = explode(",", $str);
var_dump($arr);
8. str_pad():填充字符串到指定长度
<?php
$str = "yanshi";
<?php
$str = "yansh";
echo str_pad($str, 10, "-", STR_PAD_LEFT), "<br>";
echo str_pad($str, 10, "-", STR_PAD_RIGHT), "<br>";
echo str_pad($str, 10, "-", STR_PAD_BOTH), "<br>";
如果是奇数右边先分到
9.str_repeat()
重复字符指定次数
<?php
echo str_repeat('(^_−)☆', 5);
10.str_replace()
字符串替换
- 语法:str_replace(find,replace,string,count)
- count可以计算被替换了几次
<?php
$str = '白色的云朵,红色的花朵,白色的雪糕';
echo str_replace('白色', '黑色', $str, $count), '<br>';
echo "文档内容共替换了{$count}处", '<br>';
// 示例:禁用违禁词
$forbidden = ["抽奖", "性感", "约会"];
echo str_replace($forbidden, '**', "大额抽奖必中彩,性感girl,约会联系信息"), '<br>';
// 通过数组可以个性化替换
echo str_replace($forbidden, ['***', '+++', '###'], "大额抽奖必中彩,性感girl,约会联系信息"), '<br>';
11.trim()
从二端删除指定字符
- 默认为删除空格,中间的不影响,两端匹配到的部分的才删
<?php
$str = ' this is a test ';
echo trim($str);
echo '<hr>';
$str = '122331556@qq.com 案例 124854845912';
echo $str, '<hr>';
echo trim($str, '1..9'), '<hr>';
12.strpos()
查找字符串在另一字符串中第一次出现的位置。
<?php
$str = 'this is my test';
echo 's第一次出现的位置:' . strpos($str, 's');
echo "<hr>";
// 从指定位置开始查找
echo '从索引为4开始查找i第一次出现的位置:' . strpos($str, 'i', 4);
13. strstr()
搜索字符串在另一字符串中是否存在
- 如果存在,返回该字符串及剩余部分,否则返回 FALSE。
如果第三个参数设置为 "true",它将返回第一次出现之前的字符串部分
<?php
echo strstr('there is a test', 'r'), '<br>';
echo strstr('there is a test', 'r', true);
//如果设置为 "true",它将返回第一次出现之前的字符串部分