PHP字符串操作入门教程_第1页
PHP字符串操作入门教程_第2页
PHP字符串操作入门教程_第3页
PHP字符串操作入门教程_第4页
PHP字符串操作入门教程_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、PHP字符串操作学习教程正像人说话一样,一般有形体(图形界面),有语言(print 字符串?),显然字符串能解释更多的东西。PHP提供了大量的字符串操作函数,功能强大,使用也比较简单以下将简单的讲述它的功能和特性。 弱类型PHP是弱类型语言,所以其它类型的数据一般可以直接应用于字符串操作函数里,而自动转换成字符串类型,进行处理,如:echo substr("1234567", 1, 3); 和echo substr(123456,1, 3); 是一样的定义一般用双引号或单引号标识一个字符串。比如$str = "i love u" $str = '

2、i love u' 它者两者是有一些区别的。后者将一切单引号的内容都会当作字符处理;前者则不然。比如$test = "iwind" $str = "i love $test" $str1 = 'i love $test' echo $str; /将得到 i love iwind echo $str1; /将得到 i love $test 同样的以下两个例子的行为也不一样的:echo "i love test" / 将得到 i love est,已经将t视为转义 echo 'i love test'

3、; / 将得到 i love test 从而可以简单认为双引号里的内容是经过“解释”过的,单引号的是“所见即所得”的(特殊地,''会被认作一个'')。显而易见,双引号形式的更为灵活一些,当然单引号会适用于一些特殊的场合,这里就不作阐述了。输出PHP里的输出最常用的是echo,print.两者都不是真正的函数,而是语言构造,所以调用时不必用双括号(比如echo("test");print("test").在输出的时候两者都可以实现赋值:echo $str="test" /一方面输出test,一方面把&qu

4、ot;test"赋给字符串变量 $str print $str="test" 两者除了名字不一样外,还是有其它区别的。print具有返回值,一直返回1,而echo没有,所以echo比print要快一些:$return = print "test" echo $return; / 输出1 也正因为这个原因,print能应用于复合语句中,而echo不能:isset($str) or print "str 变量未定义" / 将输出"str 变量未定义" isset($str) or echo "str

5、 变量未定义"/ 将提示分析错误 echo一次可输出多个字符串,而print则不可以:echo "i ","love ","iwind" / 将输出 "i love iwind" print "i ","love ","iwind" / 将提示错误echo,print还可以输出被称作“文档句法”的字符串,句法如:echo <<< 标签名称 . 字符串内容 . 标签名称; 比如 echo <<< test i l

6、ove iwind test; 要注意的是语句开始和结束的两个标签名称是一样的,且后一个标签名称前不能有空白,即要顶格写。文档句法输出的内容识别变量名称和常用符号,大致形同双引号的作用。输出echo,print外,PHP还提供了一些格式化字符串的函数,比如printf,sprintf,vprintf,vsprintf,在这里不作详解。连接两个以上的字符串连接用"."操作符,依字符串的顺序形成新的字符串。$str = "i " . "love " . "iwind" 这里的$str 就是 "i love i

7、wind"字符串。当然,还可以使用 .= 操作符:$str = "" / 初始化 $str .= "i love iwind" 这里用到了初始化,是因为未定义变量在使用时会产生一个notice错误,""或者null可以简单地代表空字符串。长度PHP提供strlen函数来计算字符串的长度:$str = "test" echo strlen($str); / 将输出 4有点奇怪的是strlen将中日等汉字以及全角字符都当作两个或四个长度计算。好在mbstring或icon两个函数可以帮助解决这个问题,比如:$

8、len = iconv_strlen($str, "GBK"); $len = mb_strlen($str, "GBK"); 注:mbstring模块提供了大量的对含有多字节字符的字符串的处理函数,推荐多加应用,由于这篇文章讲的是字符串入门,所以不打算详细解说。分隔与连接PHP允许你把一个字符串按照一个分隔符进行分隔成一个数组,或者将一个数组组合成一个字符串。看下面的例子:$str = "i love iwind" $array = explode(" ", $str); 上面的explode函数,就把$str字

9、符串按空格字符进行分隔,结果返回一个数组 $array:array("i", "love", "iwind").与explode函数有类似功能的有:preg_split(), spliti(), split()等函数。与此相反的,implode和join则能把一个数组结合成一个字符串,他们是具有完全相同功能的函数。$array = array("i", "love", "iwind"); $str = implode(" ", $array); 例中的im

10、plode函数将数组$array的每个元素用空格字符进行连接,返回一个字符串 $str: "i love iwind".裁剪一个字符串首和尾,可能不是你想要的部分,就可以用trim,rtrim,ltrim等函数,分别去除一个字符串两端空格,一个字符串尾部空格,一个字符串首部空格。echo trim(" i love iwind "); / 将得到 "i love iwind" echo rtrim(" i love iwind "); / 将得到 " i love iwind" echo ltr

11、im(" i love iwind "); / 将得到 "i love iwind " 其实这三个参数不仅可以去除字符串首尾的空格,还可以去除它们的第二个参数指定的字符,如:echo trim(",1,2,3,4,", ","); / 将得到 1,2,3,4 两端的","号被裁掉了。 有时还会看到有人使用chop这个函数,其实它是rtrim的同义函数。大小写对于英文字母来说,可以用strtoupper,strtolower将其转变成大写或小写。echo strtoupper("i lo

12、ve iwind"); / 将得到 I LOVE IWIND echo strtolower("I LOVE IWIND"); / 将得到 i love iwind 比较一般可以用 !=, = 比较两个对象是否相等,只所以说是两个对象,是因为它们不一定全部为字符串,也可以为整型等等。比如$a = "joe" $b = "jerry" if ($a != $b)     echo "不相等" else     echo "相等"

13、 如果用 !=,=(可以看到多了一个等号)比较的话,两个对象的类型要严格相等才能返回true;否则用=,!=则会将字符串自动转换成相应的类型,以便进行比较.22 = "22" / 返回 true 22 = "22" / 返回false 正因为这样,所以我们的程序时常会发生一些想不到的“意外”:0 = "我爱你" / 返回true 1 = "1 我爱你"/ 返回true PHP里还有这样一组用于字符串比较的函数:strcmp,strcasecmp,strncasecmp(), strncmp(),它们都是如果前者比后

14、者大,则返回大于0的整数;如果前者比后者小,则返回小于0的整数;如果两者相等,则返回0.它们比较的原理与 其它语言的规则都是一样的。strcmp是用于区分大小写(即大小写敏感)的字符串比较:echo strcmp("abcdd", "aBcde"); / 返回 1 (>0), 比较的是 "b"和"B"strcasecmp用于不区分大小写的字符串比较:echo strcasecmp("abcdd", "aBcde"); / 返回 -1 (<0), 比较的是"

15、;d"和"e" strncmp用于比较字符串的一部分,从字符串的开头开始比较,第三个参数,为要比较的长度:echo strncmp("abcdd", "aBcde", 3); / 返回 1 (>0), 比较了 abc 和 aBc strncasecmp用于不区分大小写的比较字符串的一部分,从字符串的开头开始比较,第三个参数,为要比较的长度:echo strncasecmp("abcdd", "aBcde", 3); / 返回 0, 比较了 abc 和 aBc, 由于不区分大小写,

16、所以两者是相同的。 还有一种情况是单单比较字符串大小,达不到我们预定的要求,比如照常理 10.gif 会比 5.gif 大,但如果应用上面几个函数,就会返回 -1,即表示 10.gif比5.gif,针对这种情况,PHP提供了两个自然对比的函数strnatcmp,strnatcasecmp:echo strnatcmp("10.gif", "5.gif"); / 返回 1 (>0) echo strnatcasecmp("10.GIF", "5.gif"); / 返回 1 (>0) 替换替换的意义在于将一

17、个字符串的一部分进行改变,使之成为别外一个新的字符串,以满足新的要求。PHP里通常用str_replace("要替换的内容", "要取代原内容的字符串", "原字符串")进行替换。echo str_replace("iwind", "kiki", "i love iwind, iwind said"); / 将输出 "i love kiki, kiki said" 即将 原字符串中的所有"iwind"都替换成了"kiki&qu

18、ot;.str_replace是大小写敏感的,所以对你不能设想用 str_replace("IWIND", "kiki",.)替换原字符串中的"iwind".str_replace还可以实现多对一,多对多的替换,但无法实现一对多的替换:echo str_replace(array("iwind", "kiki"), "people", "i love kiki, iwind said"); 将会输出i love people, people said第一个

19、参数中的array("iwind", "kiki")都被替换成了"people"echo str_replace(array("iwind", "kiki"), array("gentle man", "ladies"), "i love kiki, iwind said"); 输出 i love ladies, gentle man said 。也就是说第一个数组中的元素被第二个数组中的相对应的元素替换掉了,如果有一个数组比另一个数组

20、元素数要少,那么不足的都会当作空来处理。与此有些类似的是strtr,此外,PHP还提供了substr_replace,实现替换一部分的字符串。语法如下:substr_replace (原字符串, 要替代的字符串, 开始替换的位置 , 替换的长度)其中,开始替换的位置从0开始计算,应该小于原字符串的长度。要替换的长度是可选的。echo substr_replace("abcdefgh", "DEF", 3); / 将输出 "abcDEF" echo substr_replace("abcdefgh", "D

21、EF", 3, 2); / 将输出 "abcDEFfgh" 第一个例子中,从第三个位置(即"d")开始替换,从而把 "defgh"都替换成了“DEF”第二个例子中,也是从第三个位置(即"d")开始替换,但只能替换2个长度,即到e,所以就把"de"替换成了"DEF".PHP还提供了preg_replace,preg_replace_callback,ereg_replace,eregi_replace等函数应用正则表达式来完成字符串替换,用法请参考手册。查找与匹配PHP里用于查找或者匹配或者定位的函数非常多,它们都有不同的意义。这里只讲述用得比较多的strstr,stristr.后者与前者的功能,返回值都一样,只是不区分大小写。strstr("母字符串", "子字符串")用来查找子字符串在母字符串中第一次出现的位置,并返回母字符串中从子字符串开始到母字符串结束的部分。比如echo strstr("abcdefg", "e");

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论