php入门教程之截取字符串函数详解

kano个人技术博客 php教程 1,006 次浏览 没有评论

        在php中,字符串操作相当常见,kano个人博客认为如果能熟练的运用好字符串处理,那对工作效率的提高无疑是有帮助的。例如对字符串的理解定义,字符串拼接输出及字符串截取等一系列相关函数的处理操作都是非常重要的知识点,一知半解的小伙伴就听kano来详细讲解一下吧。

个人博客字符串文章

一、字符串定义

php中可以用单引号、双引号、定界符三种方式来定义字符串,其作用略有不同:

1. 单引号

1. $a = 'abcd';  // abcd 
2. $b = 'a\'bc\\d';  // a'bc\d

最普通的字符串,只支持两个转义字符:’ 和 \

2. 双引号

1. $a = "abcd";  // abcd  
2. $b = "ab\tcd";  // ab   cd  
3. $c = "c{$a}c";  // cabcdc

双引号支持更多的转义字符,如上例的\t(制表符tab)就是其中一个,具体如下所示:{

\\  反斜线

"  双引号自己

\n  换行

\r  回车

\t  制表符

\$  美元符号(因为在双引号中可以使用变量,所以这个字符也需要转义了)

\[0-7]{1,3}  八进制字符

\x[0-9a-fA-F]{1,2}  十六进制字符(可以看出不能支持unicode转义字符,只支持两位)

}

双引号字符串对比单引号字符串,最大的特点在于可解析其中的变量,如上面的“c{$a}”,比起其他语言中用+连接字符串,或者使用php中的“.”来连接字符串来说,看上去要清晰的多。

3. 定界符

1. $a = <<<AAA  
2. <!doctype html>  
3. <html lang="en">  
4. <head>  
5.   <meta charset="UTF-8">  
6.   <title>Document</title>  
7. </head>  
8. <body>  
9.   <h4>标题111</h4>  
10. </body>  
11. </html>  
12. AAA;

可以看到使用方法比引号略复杂,是以“<<<”开头,后面跟一个标识符(和变量的命名规则一样,数字字母下划线),结束也已这个标识符结束,后面跟一个分号。要注意一点:标识符结束必须从行的第一列开始,且分号后面不能有任何的字符,包括空白字符,否则会报一个语法错误。具体的使用和双引号几乎一样,但由于未用到引号,所以就不用转义了,适合输出大段的html代码。

二、如何输出字符串

字符串输出相关的方式有4种:

1. echo

1. echo 'aaa', 'bbb', 'ccc';  
2. echo('aaa');

echo是一个语言结构,所以可以不用小括号来指名参数,在不用小括号的情况下,还可以用逗号分隔输出多个参数

在输出字符串方面,echo的效率是最高的

2. print

print 'aaa';
print('aaa');

print也是一个语言结构,所以也可以不需要小括号,和echo的区别在于仅能接受一个参数,并不是很常用

3. printf

printf('%s HHHH %s', 'aaa', 'bbb');  // "aaa HHHH bbb"
printf('-- %0.2f --', 55.723);  // "-- 55.72 --"

输出格式化字符串,在字符串插入占位符,后面的参数为与占位符同等数量的变量(或直接量),以不同类型的占位符格式化为字符串,最后统一输出。学过C语言的同学应该比较熟悉,与C语言中的同名函数用法相同。

※ 占位符格式较多,具体请查阅手册

4. sprintf

$str = sprintf('%s HHHH %s', 'aaa', 'bbb');

和printf的区别在于不直接输出字符串,而是将其返回,其余和printf一样。

三、字符串格式涉及的一些常用操作

1. 访问字符串某个下标的字符:

1. $a1 = 'abcd';  
2. $a2 = $a1[1];  // b  
3. $a3 = $a1{2};  // c

可以使用变量名[]或{}的方式方便的取得某个字符,建议使用{},方便和字符串数组进行区分。php中没有字符类型,所以获取的实际上是长度为1的字符串。需要注意的一点是,php对unicode默认是不支持的,所以以这种方式获取某个中文字符的时候并不能得到想要的结果,这时需要用到mb_substr方法。

2. 查询一个字符串是否在另一个字符串中或者字符串匹配另一个字符串的具体位置:

1. $a = 'abcd';  
2. $b = 'bc';  
3. $c = 'zz';  
4. strpos($a, $b);  // 1  
5. strpos($a, $c);  // false

使用strpos函数,第一个参数是要在其中查找的字符串,第二个参数是要查找的字符串,如果成功找到,则返回第一次找到字符串的索引位置(0开始),否则返回布尔值false

3. 字符串查找和字符串替换

1. $a = 'abcdbce';  
2. $b = 'bc';  
3. str_replace($b, 'zzzzz', $a);  // azzzzzdzzzzze

使用str_replace函数,将字符串$a中的$b,以”zzzzz”替换,注意所有找到的字符串都会被替换,而不是只替换一次。

4. 判断字符串长度

$a = 'abcd';
strlen($a);  // 4

很简单,将会返回int类型的字符串长度。

5. 去除空白字符

$a = '  abcd  ';
ltrim($a);  //  'abcd  '
rtrim($a);  // '  abcd'
trim($a);  // 'abcd'

ltrim去除左空白,rtrim去除右空白,trim去除两边空白。

6. 截取字符串

$a = 'abcdefg';
substr($a, 2, 3);  // cde

截取拆分字符串在字符串操作中属于很常见的功能,substr函数可完成这件事,参数1是要截取的字符串,参数2为从哪里开始截取的下标,参数3为截取的长度。

四、关于中文字符串转义的处理函数

        在实际的应用中会发现上述的函数在处理中文的时候会有问题,如strlen在计算中文字符串长度的时候计算的实际上是字节数而是字符数,substr函数会过滤中文字符串截成乱码,这时候就要到php提供的一系列“mb”函数,这类函数的用途实际上和非“mb”函数一样,但是可以指定编码,如果省略编码参数,则使用内部字符串编码,通常来说我们是不用特意写上编码就可以达到想要的效果了。

上述几个函数的“mb”版本:{

mb_strpos

mb_strlen

mb_substr

}

        当然kano个人博客关于字符串截取等php新手入门教程或者实战教程还有很多,包括字符串加密、删除字符串、字符串转整型函数、转日期格式等等kano都在本篇都没有涉及到,今后有机会还会介绍给大家。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Go