Blogger Information
Blog 24
fans 1
comment 0
visits 20857
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP字符串的创建方式及常用字符串函数
知行合一
Original
1354 people have browsed it

字符串的创建方式


1.单引号创建

单引号中的变量不能被解析,想要被解析要用字符串拼接的方式

  1. $str='hello world!';
  2. echo '小明$str';
  3. echo '<br>';
  4. echo '小明'.$str; //字符串拼接


单引号的特殊字符不能被解析出来

  1. echo 'hello,china \n\r haha';
  2. echo '<br>';


在单引号中又出现单引号 需要用\进行转义
字符串中的单引号有两重意义,定界符和单引号。
echo 'hello,\'china\'';
如果想在字符串中输入\,则也输入两个\第一个是转义
echo 'hello,\\china\\';

2.双引号创建

双引号中的变量可以被解析出来
echo "小明$str 是个好学生"; //变量后面必须有空格

将变量和其后面字符连接起来,给变量加个大括号{},或者只给$后面的标识加上也可。

  1. echo "小明 {$str}真是个好学生";
  2. echo '<br>';
  3. echo "小明 ${str}真是个好学生";


双引号能解析回车换行,回车换行在浏览器中被解析成单个空格
echo "hello,china \n\r haha";

双引号中可以转义特殊字符

  1. echo "hello,\"china\"";
  2. echo '<br>';
  3. echo "hello,\\china\\";

3.heredoc创建 可以看到是双引号的升级版

  • heredoc中的字符串不需要双引号定界符
  • 非常适合HTML+PHP编写模板
  • 标识可以自己定义,开始和结束的必须一致,不区分大小写。
  • 开始的可以加上引号,也可不加,后面不能有空格。
  • 结尾的最好顶着开头写。
    1. $str="北京";
    2. echo <<< Hi
    3. hello,<span style="color:red">$str</span>
    4. Hi;

    4.nowdoc 可以看到是单引号的升级版

    起始必须加上单引号。适合书写大量的文本内容
    1. echo <<< 'NOW'
    2. hello,<span style="color:red">上海</span>
    3. NOW;

字符串打印输出函数

printf将输出的字符串按指定的格式输出

  • 格式 printf(‘模板’,替换掉模板中的占位符)
  • 如果 % 符号多于 arg 参数,则您必须使用占位符。占位符被插入到 % 符号之后,由数字和 “\$” 组成
    1. printf('%s的体重是%d公斤','小明','40');
    2. printf('%1$s的体重是%2$d公斤,但是%1$s偏重','小明','40');

    vprintf() 中的参数位于数组中,与 printf() 不同。

    数组元素将被插入到主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个 % 符号处,插入第一个数组元素,在第二个 % 符号处,插入第二个数组元素,依此类推。
    1. vprintf('%s的体重是%d公斤',['小红','30']);
    2. echo '<br>';
    3. vprintf('%1$s的体重是%2$d公斤,但是%1$s偏重',['小红','30']);

    sprintf() 格式化字符,是返回,但是不输出

    1. echo sprintf('%s的体重是%d公斤','小刚','50');
    2. //用echo 来显示

vsprintf() 格式化字符,是返回,但是不输出,参数位于数组中

  1. echo vsprintf('%1$s的体重是%2$d公斤,但是%1$s偏重',['小强','60']);


字符串分割查询函数

implode(): 将数组组装成一个字符串

也可以用join() 意义一样

  1. $arr=['北京','上海','广州','深圳'];
  2. echo implode('-',$arr).'<br>';//第一个参数是分割符

explode();字符串组装成数组

explode(分隔符,字符串,数量)

  1. $str='apple,orange,banner,pear';
  2. print_r (explode(',',$str));

  1. print_r (explode(',',$str,2)); //

  1. list($fruit1,$fruit2,$fruit3)=explode(',',$str);
  2. echo '<br>';
  3. echo $fruit1,$fruit2,$fruit3;

  1. //list()用于在一次操作中给各个变量赋值。
  2. list($a,$b)=[100,200];
  3. echo $a,$b;
  4. //输出 100 200

substr()分割函数

  1. echo substr('abcdefg',0).'<br>';
  2. echo substr('abcdefg',5).'<br>';
  3. echo substr('abcdefg',1,3).'<br>';
  4. echo substr('abcdefg',-1).'<br>'; //从结尾开始第一个,向右 输出 所以是g
  5. echo substr('abcdefg',-3).'<br>'; //从结尾开始第三个,向右 输出 所以是efg
  6. echo substr('abcdefg',-3,2).'<br>';

str_split() 把字符串转为数组

可指定数组元素的宽度.不写参数,默认是1

  1. print_r(str_split('hello,world!',1));
  2. echo '<br>';
  3. print_r(str_split('hello,world!',2));
  4. echo '<br>';
  5. print_r(str_split('hello,中华人民共和国',3));//UFT-8一个中文占三个字节

mb_strlen()函数返回字符串的长度

与strlen不同的时,它可以通过设置字符编码从而返回对应的字符数,很好的处理了中文字符串的长度问题。

  1. echo mb_strlen("菜鸟教程RUNOOB").'<br>'; //返回10 一个中文占一个字节
  2. // 使用strlen
  3. echo strlen("菜鸟教程RUNOOB").'<br>'; //返回18,一个中文占3个字节

mb_substr()函数返回字符串的一部分,分割中文文字

substr()函数,它只针对英文字符,如果要分割的中文文字则需要使用mb_substr()
echo mb_substr("菜鸟教程是个好教程",1,3);

str_getcsv() 函数解析 CSV 格式字段的字符串

并返回包含所读取字段的数组。
CSV 格式字段 : 北京,上海,天津,重庆。
一般用来读取文件,然后将文件内容放入数组。
print_r(str_getcsv('北京,上海,天津,重庆'));

  1. // file_get_contents() 函数把整个文件读入一个字符串中。
  2. $csvStr= file_get_contents('text.txt');
  3. //文件目录或名字不要用中文,用中文会出问题的
  4. echo $csvStr;

字符串填充替换函数

str_pad() 把字符串填充为新的长度。

用法:str_pad(要填充的字符串,必选-新的字符串长度,可选-规定供填充使用的字符串,可选-规定填充字符串的哪边)
STR_PAD_BOTH - 填充字符串的两侧。如果不是偶数,则右侧获得额外的填充。
STR_PAD_LEFT - 填充字符串的左侧。
STR_PAD_RIGHT - 填充字符串的右侧。默认。
echo str_pad('hello',30,"-*-",STR_PAD_LEFT);

str_repeat()把字符串重复指定的次数

用法:str_repeat(必需-规定要重复的字符串,必需-规定字符串将被重复的次数。必须大于等于 0)
echo str_repeat("上海,",5);

str_replace字符串替换

用法:

  • 如果搜索的字符串是数组,那么它将返回数组。
  • 如果搜索的字符串是数组,那么它将对数组中的每个元素进行查找和替换。
  • 如果同时需要对数组进行查找和替换,并且需要执行替换的元素少于查找到的元素的数量,那么多余元素将用空字符串进行替换
  • 如果查找的是数组,而替换的是字符串,那么替代字符串将对所有查找到的值起作用。
  • 区分大小写。 str_ireplace() 函数执行不区分大小写
    1. echo str_replace('php','*','phpcn,phpchina,thinkphp',$count);
    2. echo '<br>替换了'.$count.'次<br>';
    1. $search=['广告','交友','棋牌','直销'];
    2. echo str_replace($search,'***','最牛广告服务商,提供异性交友服务,棋牌游戏直销推广等');
    3. echo '<br>';
    4. echo str_replace($search,['++','@@','##','&&'],'最牛广告服务商,提供异性交友服务,棋牌游戏直销推广等');

    trim()移除字符串两侧的字符

    用法:
  • 如果不写第二个参数,就是去空白和其它预定义的
  • ltrim() - 移除字符串左侧的空白字符或其他预定义字符
  • rtrim() - 移除字符串右侧的空白字符或其他预定义字符
    1. $str='3123fdsalkj958731';
    2. echo trim($str);
    3. echo '<br>';
    4. echo trim($str,'31');
    5. echo '<br>';
    6. echo trim($str,'1..9'); //三个.也可以
    7. echo '<br>';
    8. echo trim($str,'1..4');
    9. echo '<hr>';

    strpos()查找字符串在另一字符串中第一次出现的位置

    用法:
  • strpos(必需-规定要搜索的字符串,必需-规定要查找的字符串,可选-规定在何处开始搜索。)
  • strpos() 函数查找字符串在另一字符串中第一次出现的位置。对大小写敏感。
  • stripos() - 查找字符串在另一字符串中第一次出现的位置(不区分大小写)
  • strrpos() - 查找字符串在另一字符串中最后一次出现的位置(区分大小写)
  • strripos() - 查找字符串在另一字符串中最后一次出现的位置(不区分大小写)
    1. echo strpos('hello,i am lilei!','am');
    2. echo strpos('hello,i am lilei!','am',3);//从第3个位置查,第一次出现am 相对于整个字符串的位置
    3. echo strpos('hello,i am lilei!','l'); //输出 2
    4. echo strpos('hello,i am lilei!','l',5); //输出11

    strstr()查找字符串在另一字符串中第一次出现的位置

    用法:
  • 查找字符串在另一字符串中第一次出现的位置,并返回字符串的剩余部分 对大小写敏感
  • strstr(必需-规定被搜索的字符串,必需-规定所搜索的字符串,可选-默认值为 “false” 的布尔值.)如果设置为 “true”,它将返回 search 参数第一次出现之前的字符串部分。
  • 不区分大小写的搜索,请使用 stristr() 函数
    1. echo strstr('images/banner.jpg','.'); //返回一个后缀
    2. echo '<br>';
    3. echo strstr('images/banner.jpg','.',true);
    4. echo '<br>';
    5. echo ltrim(strstr('admin@php.cn','@'),'@');//输出邮箱的域名
    6. echo '<br>';
    7. echo rtrim(strstr('admin@php.cn','@',true),'@');//输出邮箱的用户名

    parse_str() 函数 把查询字符串解析到变量中

    1. $str=$_SERVER['QUERY_STRING'];
    2. parse_str($str,$a); //把查询字符串解析到变量中:
    3. print_r($a);

    parse_url() 分解出一个URL的各个部分

    1. $arr=parse_url('http://php.edu/%E5%AD%97%E7%AC%A6%E4%B8%B2/URL%E5%A4%84%E7%90%86%E5%87%BD%E6%95%B0.php?id=5&name=haha');
    2. print_r($arr);
    3. echo '<br><br>';
    4. print_r($arr['query']);

    base64_encode 将二进制数据进行编码后进行传输

    注意:中文目录下如果出现问题,改成英文数字目录就可
    1. $img=base64_encode(file_get_contents('girl.jpg')); //进行base64编码
    2. echo $img;//输出编码内容
    3. echo "<img src=\"data:image/jpeg;base64,{$img}\" width=\"200\">";//显示图片
    4. file_put_contents("newgirl.jpg",base64_decode($img));//进行解码后,重新生成一张新图片

    加密函数

    1. echo md5('123456'); //32位
    2. echo '<br>';
    3. echo sha1('123456');//40位
    4. echo '<br>';
    5. echo md5(sha1('123456')); //32位
    6. echo '<hr>';
    7. $p='hello';
    8. echo sha1('123456'.$p);//加上特殊指定字符串混合加密,更安全

    md5_file()函数

    要这个文件被更新过,那么他的返回值就会有变化 。比如用在用户上传中,比较已经存在的文件
    1. echo md5_file('test.php'); //显示一个文件的MD5
    2. file_put_contents('test.txt',md5_file('test.php')); //将test.php的md5值生成一个test.txt文件
    3. if (file_get_contents('test.txt')===md5_file('test.php')){
    4. echo "文件没被修改过"; //修改test.txt里面的值就会提示被修改过
    5. }
    6. else{
    7. echo "文件被修改过";
    8. }

总结:

字符串有很多,学习难度不大,常见的要掌握。其它的可以熟悉,了解一下功能。遇到时候查查手册,加强记忆。

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:以正在进行的作业为主吧,这些以后再补,别影响当下
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
1 comments
灭绝师太 2020-07-17 17:07:36
对,常用的字符串函数要熟悉,不懂得时候看手册,没必要全部熟记!字符串函数常用语过滤,检测表单字段用户输入的数据。
1 floor
Author's latest blog post