字符串大小上限:2G
创建字符串有4种方式:
单引号
双引号
heredoc
nowdoc
示例:
// 1.单引号
$name = '小刚';
$age = 18;
// 单引号中不解析变量
echo '$name$age岁了';
// 可用拼接方式
echo $name . $age . '岁了';
// 在字符串中换行,单引号中不解析特殊字符
echo 'This is a beautiful \n\r world!';
// 字符串中多个单引号嵌套要用转义符"\"
echo '世界真\'美\'啊!';
// 或者用双引号嵌套
echo '世界真"美"啊!';
// 反斜线后面跟单引号要原样输出反斜线需要将反斜线转义
echo '世界真美啊!\\';
echo '<hr>';
// 2.双引号
echo "世界真'美'啊!";
// 解析变量,变量间加个空格
echo "$name $age 岁了";
// 要将变量和其它字符串紧贴,用定界符{}
echo "{$name}{$age}岁了";
// 可以解析特殊字符,但html中将\n换行解析为空格
echo "This is a beautiful \n\r world!";
echo '<hr>';
// 3.heredoc,有双引号的特点,适合htmlphp混编
// 双引号默认可以不写
// echo <<< "TITLE"
echo <<< TITLE
{$name}在php学习网站:php.cn学习php
TITLE;
// 4.nowdoc,有单引号的特点
echo <<< 'TITLE'
{$name}在php学习网站:php.cn学习php
TITLE;
字符串输出函数
print_r()格式化输出结果
printf(‘模板’, 替换掉模板中的占位符)
printf('小刚今年%s岁', 18);
printf('%s今年%d岁', '小刚', 18);
- 参数多了很麻烦,使用vprintf()
vprintf('%s今年%d岁', ['小刚', 18]);
- sprintf():返回格式化字符串
echo sprintf('%s今年%d岁', '小刚', 18) . '<br>';
- file_put_contents():将字符串写入文件中
file_put_contents('1.text', sprintf('%s今年%d岁', '小刚', 18));
- vsprintf():功能与sprintf()相同,参数不同
file_put_contents('2.text', vsprintf('%s明年%d岁', ['小刚', 19]));
字符串分割查询与替换
示例1:
// 1.数组拼装字符串
$arr = [1, 2, 3, 4, 5];
// 用*拼装数组
echo implode('*', $arr), '<br>';
// 用?拼装数组与implode()功能一样
echo join('?', $arr), '<br>';
// 2.字符串转为数组
$str = 'class, grade, number';
// 分隔符号一致的字符串转化,指定获取的字符串长度后的数据会在最后一个分割符号中全部包含
// print_r(explode(', ', $str, 2));
// echo '<hr>';
// 如果要正确解析字符串指定长度用list()
// 结构索引数组元素到变量中,list()不是函数,7.0+才能解析关联数组
// 自动创建变量$class,$grade
list($class, $grade) = explode(', ', $str, 3);
echo "班级:{$class}, 年级:{$grade}", '<br>';
// 3.字符串子串获取substr(字符串, 位置, 要获取的长度)
// UTF-8中一个汉字为3个字节,所以取汉字要是3的整数倍,否则乱码
echo substr('小刚今年18岁', 3, 9), '<br>';
// 第二个参数为负数,是从倒数向后取,第三个参数也要符合汉字位数,8岁是4个字节
echo substr('小刚今年18岁', -4, 4), '<br>';
// 4.字符串转为数组并可指定数组元素:str_split(字符串, 获取的元素数量)
$str1 = '小刚今年18岁';
// 转为数组后中文有部分乱码,是因为18岁是5个字节不能被3整除
print_r(str_split($str1, 3));
// 这种情况需要扩展函数:mb_chr()等函数来解决,php版本7.0+
echo '<hr>';
// csv文件:纯文本存储表格数据,用分隔符分开
// file_get_contents()获取文本文件内容
$csv = file_get_contents('3.csv');
echo $csv, '<br>';
// 将读取的字符串转为数组
print_r(explode(', ', $csv));
示例2:
// 1.str_pad(string,length,pad_string,pad_type):把字符串填充为新的长度
echo str_pad('小刚', 12, '帅', STR_PAD_LEFT), '<br>';
echo str_pad('小刚', 12, '帅', STR_PAD_RIGHT), '<br>';
echo str_pad('小刚', 12, '帅', STR_PAD_BOTH), '<br>';
// 2.str_repeat():重复输出字符串
echo str_repeat('小刚', 5), '<br>';
// 3.str_replace()字符串替换
echo str_replace('\\', '/', '\public\index.php'), '<br>';
// 用于替换的目录分隔符根据操作系统自动适应:DIRECTORY_SEPARATOR
echo str_replace('\\', DIRECTORY_SEPARATOR, '\public\index.php'), '<br>';
// 查询字符串被替换的次数
echo str_replace('\\', DIRECTORY_SEPARATOR, '\public\index.php', $count), '<br>';
echo $count, '<br>';
// 例如需要屏蔽某些非法词语
$notAllow = ['政治', '广告', '直播', '非法'];
// 含有非法词语的字符串都被替换成*
echo str_replace($notAllow, '*', '政治难题, 非法交友, 直播陪聊, 广告推广'), '<br>';
// 个性化替换
echo str_replace($notAllow, ['*', '-', '+', '^'], '政治难题, 非法交友, 直播陪聊, 广告推广'), '<br>';
// 3.trim():从两边删除指定字符,例如用户提交的账号密码
// ltrim()只去除左边的,rtrim()只去除右边的
$user = ' admin ';
$pwd = ' pwd ';
echo '用户名:' . $user . '密码:' . $pwd, '<br>';
// 去除两边的空格
echo '用户名:' . trim($user) . '密码:' . trim($pwd), '<br>';
// 过滤两边的指定字符
$userid = '18a';
echo trim($userid, 'a'), '<br>';
// 去除1到9之间数字
echo trim($userid, '1..9'), '<br>';
echo trim($userid, '1...9'), '<br>';
// 4.strpos():字符串在另一字符串中首次出现的位置
$str = '小刚今年18岁';
echo strpos($str, '今'), '<br>';
// 从指定位置开始查询
echo strpos($str, '1', 9), '<br>';
// 5.strstr():搜索字符串在另一字符串中是否存在,如果是,返回该字符串及剩余部分,否则返回 FALSE
$name = '小刚拉斯托弗六笔司机6666666';
$file = '\public\images\1.jpg';
$email = 'admin@163.com';
echo strstr($name, '六'), '<br>';
echo strstr($file, '.'), '<br>';
// 第三个参数为true的时候返回指定字符前的字符串(默认为false)
echo strstr($email, '@', true), '<br>';
总结
字符串特殊字符输出要转义
字符串紧贴用定界符
{}
掌握输出的各种方式及特点
掌握字符串分割、替换、拼装