学习要点:
1.字符串格式化
2.操作子字符串
3.字符串比较
4.查找替换字符串
5.处理中文字符
在每天的编程工作中,处理、调整以至最后控制字符串是很重要的一部分,一般也认为这是所有编程语言的基础。不同与其他语言,PHP 没有那么麻烦地使用数据类型来处理字符串。这样一来,PHP 中的字符串处理就再容易不过了。
一.字符串格式化
整理字符串的第一步是清理字符串中多余的空格。虽然这一部操作不是必需的,但如果要将字符串存入一个文件或数据库中,或者将它和别的字符串进行比较,这就是非常有用的 。
chop()函数移除字符串后面多余的空白,包括新行。
ltrim() 函数移除字符串起始处多余空白。
rtrim() 函数移除字符串后面多余的空白,包括新行,此函数是 chop() 的别名。
trim()函数移除字符串两边多余的空白。
<?php echo trim(' PHP ' ); ?>
PHP 具有一系列可供使用的函数来重新格式化字符串,这些函数的工作方式是各不相同的。
nl2br()函数将字符串作为输入参数,用 XHTML 中的<br />标记代替字符串中的换行符。
<?php echo nl2br("This is a Teacher!\nThis is a Student!"); ?>
将特殊字符转换为 HTML 等价形式,可以使用 htmlentities() 和 htmlspecialchars 函数。如果想要去掉字符串中的 HTML 去掉,可以使用 strip_tags()函数
<?php echo htmlentities('<strong>我是吴祁!</strong>'); //转换所有字符 echo htmlspecialchars( '<strong>我是吴祁!</strong>') // 转换特殊字符 echo strip_tags('<strong>我是吴祁!</strong>') //去掉了<strong> ?>
对于字符串来说,某些字符肯定是有效的,但是当将数据插入到数据库中的时候可能会引起一些问题,因为数据库会将这些字符解释成控制符。这些有问题的字符就是引号(单引号和双引)、反斜杠(\)和 NULL 字符。
PHP 提供了两个专门用于转义字符串的函数。在将任何字符串写到数据库之前,应该使用 addslashes() 将它们重新格式化,
在调用了 addslashes() 后,所有的引号都加了斜杠,而stripslashes()函数去掉了这些斜杠 。
<?php echo addslashes('This is \a" Teacher! ' ); ?>
可以重新格式化字符串中的字母大小写。
strtoupper()函数将字符串转换为大写
strtolower()函数将字符串转换成小写
ucfirst()函数将第一个字母转换为大写
ucwords()函数将每个单词第一个字母转换为大写
<?php echo strtoupper('yc60.com@gmail.com' ); ?>
填充字符串函数:str_pad()将字符串用指定个数的字符填充字符串。
<?php echo str_pad('Salad' ,10 ).'is good.'; ?>
二.操作子字符串
通常,我们想查看字符串的各个部分。例如,查看句子中的单词,或者将一个域名或电子邮件地址分割成一个个的组件部分。PHP 提供了几个字符串函数来实现此功能。
使用函数 explode()、implode()和 join()
为了实现这个功能,我们将使用的第一个函数是 explode()。
使用 implode()或 join()函数来实现与函数 explode()相反的效果,这两个函数的效果是一致的。
<?php $email = 'yc60.com@gmail.com' ; $email_array = explode('@' ,$email); ?>
使用 strtok() 函数
strtok() 函数一次只从字符串取出一些片段(称为令牌)。对于一次从字符串中取出一个单词的处理来说,strtok() 函数比 explode()函数的效果更好。
<?php $str = "I,will.be#back" ; $tok = strtok($str,",.#" ); while ($tok) { echo "$tok <br \>"; $tok = strtok(",.#"); } ?>
使用 substr() 函数
函数 substr() 允许我们访问一个字符串给定起点和终点的子字符串。这个函数并不适用于我们的例子中,但是,当需要得到某个固定格式字符串中的一部分时,它会非常有用。
<?php echo substr( "abcdef", 1, 3); ?>
分解字符串: str_split()返回一个数组,其中各数组元素分别是字符串参数中的一个字符串。
<?php print_r(str_split('This is a Teacher!')); ?>
逆置字符串:strrev() 可以将一个字符串逆反过来。
<?php echo strrev('This is a Teacher!'); ?>
三.字符串比较
到目前为止,我们已经用过"= ="号来比较两个字符串是否相等。使用 PHP 可以进行一些更复杂的比较。这些比较分为两类:部分匹配和其他情况。
字符串的排序:strcmp() 、strcasecmp()和 strnatcmp()
该函数需要两个进行比较的参数字符串。如果这两个字符串相等,该函数返回 0,如果按字典顺序 str1 和 str2 后面(大于 str2)就返回一个正数,如果 str1 小于 str2 就返回一个负数。这个函数是区分大小写的。
函数 strcasecmp() 除了不区分大小写之外,其他和 strcmp() 一样。
函数 strnatcmp() 及与之对应的不区分大小写的 strnatcasecmp()函数是在 PHP4 中新增的。
这两个函数按“自然排序”比较字符串,所谓自然排序是按人们习惯的顺序进行排序。
<?php echo strcmp('a' ,'b' ); ?>
使用 strspn() 函数返回一个字符串中包含有另一个字符串中字符的第一部分的长度。也就是求两个字符串之间相同的部分。
<?php echo strspn('gmail','yc60.com@gmail.com ' ); ?>
使用 strlen()函数测试字符串的长度
可以使用函数 strlen()来检查字符串的长度。如果传给它一个字符串,这个函数将返回字符串的长度。例如, strlen("hello") 将返回 5.
<?php echo strlen('This is a Teacher!'); ?>
确定字符串出现的频率:substr_count()返回一个字符串在另一个字符串中出现的次数。
<?php echo substr_count('yc60.com@gmail.com' ,'c' ); ?>
四.查找替换字符串
通常,我们需要检查一个更长的字符串中是否含有一个特定的子字符串。这种部分匹配通常比测试字符串的完全等价更有用处。
在字符串中查找字符串:strstr() 、strchr()、strrchr() 和 stristr()
函数 strstr() 是最常见的,它可以用于在一个较长的字符串专供查找匹配的字符串或字符。请注意,函数 strchr() 和 strstr()完全一样。
<?php echo strstr( 'yc60.com@gmail.com' ,'@' ); ?>
函数 strstr() 有两个变体。第一个变体是 stristr() ,它几乎和 strstr() 一样,其区别在于不区分字符大小。对于我们的只能表单应用程序来说,这个函数非常有用,因为用户可以输入"delivery"、"Delivery" 和"DELI VERY" 。
第二个变体是 strrchr() ,它也几乎和 strstr() 一样,只不过是 strstr() 的别名。
查找字符串的位置:strpos()、strrpos() 。
函数 strpos() 和 strrpos() 的操作和 strstr() 类似,但它不是返回一个子字符串,而返回子字符串 needle 在字符串 haystack 中的位置。更有趣的是,现在的 PHP 手册建议使用 strpos()函数代替 strstr() 函数来查看一个子字符串在一个字符串中出现的位置,因为前者的运行速度更快。
<?php echo strrpos('yc60.com@gmail.com' ,'c' ); ?>
替换字符串:str_replace()、str_ireplace() 、substr_replace()
<?php echo str_replace('@' ,'#' ,'yc60.com@gmail.com' ); echo substr_replace('yc60.com@gmail.com' ,'###' , 0,5); ?>
五. 处理中文字符
对于以上的字符串函数,有些可以用于中文,但有些却不适用中文。所以,PHP 提供了专门的函数来解决这样的问题。
中文字符可以是 gbk,utf8,gb2312
mb_strlen () 对应的函数为 strlen() 求字符串的长度
mb_strstr() 对应的函数为 strstr() 求某字符串到结尾的字符
mb_strpos() 对应的函数为 strpos() 求出字符最先出现处
mb_substr() 对应的函数为 substr() 取出指定的字符串
mb_substr_count() 对应函数为 substr_str() 返回字符串出现的次数
最后扫一遍手册
相关推荐
NULL 博文链接:https://onestopweb.iteye.com/blog/2203933
函数名描述输出字符串输出一个或者多个字符串输出字符串并退出当前脚本输出格式化字符串把格式化的字符串写入一个变量中+ 输出是一个程序重要的组成部分,如果一个程序没
第13章 字符串处理函数 C语言
第1章: 概述 第 2 章:C#与Visual Studio 2005 第 3 章:变量、数据类型和表达式 ...第 8 章:数组与字符串 第 9 章:基于 Windows 的应用程序 第 10 章:创建 Web 应用程序 第 11 章:.NET Framework 2.0 简介
本章的基本内容是:字符串。在程序设计语言中大都有串变量的概念,而且实现了基本的串操作,本章重点讨论串的存储结构及模式匹配算法。
python第三章,字符串的简单处理及应用。以及数据类型
Python从入门到精通 第7章 字符串.ppt Python从入门到精通 第8章 Python中使用正则表达式.ppt Python从入门到精通 第9章 函数.ppt Python从入门到精通 第10章 面向对象程序设计.ppt Python从入门到精通 第11章 模块....
java 字符串处理,字符窜很重要哦,好好看下!
第 8 章 字符串处理函数 第 9 章 结构体 第 10 章 链表 第 11 章 文件 第 12 章 Makefile 自用的千锋讲义文档,涵盖了C语言的各种语法、方法/函数、头文件的使用方式,讲义中还带有示例代码供测试验证,跟着...
第二章 字符串处理和进制转换(C++)_codes.rar
第6章字符串的处理[汇编].pdf
第二章 字符串处理和进制转换(C++) 第2课 贝贝的图形(vhist)-2019-11-26 第二章 字符串处理和进制转换(C++) 第2课 贝贝的图形(vhist)-2019-11-26
完整版精品java课件 Java基础入门教程 Java程序设计 第7章 字符串处理(共38页).ppt 完整版精品java课件 Java基础入门教程 Java程序设计 第8章 异常处理(共27页).ppt 完整版精品java课件 Java基础入门教程 Java...
第二章 字符串处理和进制转换(C++)_PDF(2020.06.10).rar
Python基础入门教程 由浅入深讲解清晰 第4章 字符串与正则表达式 (共55页).ppt Python基础入门教程 由浅入深讲解清晰 第5章 函数的设计和使用 (共49页).ppt Python基础入门教程 由浅入深讲解清晰 第6章 面向对象...
C++课件第11章-string类字符串处理(ppt文档).ppt
第4章 熟练操作字符串.ppt 第5章 程序的控制结构.ppt 第6章 函数.ppt 第7章 对象与类.ppt 第8章 程序调试和异常处理.ppt 第9章 模块与类库.ppt 第10章 日期和时间.ppt 第11章 迭代器、生成器与装饰器.ppt 第12章 ...
第3章 字符串转换 68 3.1 ToString()方法 68 3.2 把数值表示为字符串 69 3.3 把日期和时间表示为字符串 74 3.4 把其他对象表示为字符串 76 3.5 用字符串表示字符串 78 3.6 把字符串转换为其他类型 79 3.6.1 把字符串...
第9章 字符串和正则表达式 第10章 处理文件和操作系统 第11章 PEAR 第12章 日期和时间 第13章 PHP 5.1 第14章 表单和导航提示 第15章 处理文件上传 第16章 网络 第17章 PHP和LDAP 第18章 会话处理器 第19章 用Smarty...
Java复习材料。包括《Java技术及其应用》(第二版)...第8章 字符串处理 第10章 异常处理 第11章 输入输出处理 第13章 线程 第14\15章 图形界面 以及部分java实例 和 大量java期末考试复习、练习题 习题、模拟题