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(‘[email protected]‘);

?>

 

填充字符串函数:str_pad()将字符串用指定个数的字符填充字符串。

<?php

echo str_pad(‘Salad‘,10).‘is good.‘;

?>

 

二.操作子字符串

通常,我们想查看字符串的各个部分。例如,查看句子中的单词,或者将一个域名或电子邮件地址分割成一个个的组件部分。PHP提供了几个字符串函数来实现此功能。

使用函数explode()、implode()和join()

为了实现这个功能,我们将使用的第一个函数是explode()。

使用implode()或join()函数来实现与函数explode()相反的效果,这两个函数的效果是一致的。

<?php

$email = ‘[email protected]‘;

$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 aTeacher!‘));

?>

 

逆置字符串: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‘,‘[email protected]‘);

?>

使用strlen()函数测试字符串的长度

可以使用函数strlen()来检查字符串的长度。如果传给它一个字符串,这个函数将返回字符串的长度。例如, strlen("hello")将返回5.

<?php

echo strlen(‘This is a Teacher!‘);

?>

确定字符串出现的频率:substr_count()返回一个字符串在另一个字符串中出现的次数。

<?php

echo substr_count(‘[email protected]‘,‘c‘);

?>

 

 

 

四.查找替换字符串

 

通常,我们需要检查一个更长的字符串中是否含有一个特定的子字符串。这种部分匹配通常比测试字符串的完全等价更有用处。

在字符串中查找字符串:strstr()、strchr()、strrchr()和stristr()

函数strstr()是最常见的,它可以用于在一个较长的字符串专供查找匹配的字符串或字符。请注意,函数strchr()和strstr()完全一样。

<?php

echo strstr(‘[email protected]‘,‘@‘);

?>

函数strstr()有两个变体。第一个变体是stristr(),它几乎和strstr()一样,其区别在于不区分字符大小。对于我们的只能表单应用程序来说,这个函数非常有用,因为用户可以输入"delivery"、"Delivery"和"DELIVERY"。

第二个变体是strrchr(),它也几乎和strstr()一样,只不过是strstr()的别名。

查找字符串的位置:strpos()、strrpos()。

函数strpos()和strrpos()的操作和strstr()类似,但它不是返回一个子字符串,而返回子字符串needle在字符串haystack中的位置。更有趣的是,现在的PHP手册建议使用strpos()函数代替strstr()函数来查看一个子字符串在一个字符串中出现的位置,因为前者的运行速度更快。

<?php

echo strrpos(‘[email protected]‘,‘c‘);

?>

替换字符串:str_replace()、str_ireplace()、substr_replace()

<?php

echo str_replace(‘@‘,‘#‘,‘[email protected]‘);

echo substr_replace(‘[email protected]‘,‘###‘,0,5);

?>

 

五. 处理中文字符

对于以上的字符串函数,有些可以用于中文,但有些却不适用中文。所以,PHP提供了专门的函数来解决这样的问题。

中文字符可以是gbk,utf8,gb2312

mb_strlen() 对应的函数为strlen()  求字符串的长度

mb_strstr()  对应的函数为 strstr()  求某字符串到结尾的字符

mb_strpos() 对应的函数为 strpos()  求出字符最先出现处

mb_substr() 对应的函数为 substr()  取出指定的字符串

mb_substr_count() 对应函数为 substr_str() 返回字符串出现的次数

时间: 2024-11-10 18:17:18

PHP整理笔记七字符串处理的相关文章

jQuery整理笔记七----几个经典表单应用

1.文本框获得(失去)焦点 当文本框获得输入焦点时,将该文本框高亮显示,算不得一个应用,仅仅是一个小技巧,能够提高用户体验. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/

jQuery整理笔记目录

jQuery整理笔记目录 jQuery整理笔记一----jQuery开始 jQuery整理笔记二----jQuery选择器整理 jQuery整理笔记三----jQuery过滤函数 jQuery整理笔记四----jQuery操作DOM jQuery整理笔记五----jQuery事件 jQuery整理笔记六----jQuery动画 jQuery整理笔记七----几个经典表单应用 jQuery整理笔记八----jQuery的Ajax jQuery整理笔记九----功能性表格开发 jQuery整理笔记目

jQuery整理笔记文件夹

jQuery整理笔记文件夹 jQuery整理笔记一----jQuery開始 jQuery整理笔记二----jQuery选择器整理 jQuery整理笔记三----jQuery过滤函数 jQuery整理笔记四----jQuery操作DOM jQuery整理笔记五----jQuery事件 jQuery整理笔记六----jQuery动画 jQuery整理笔记七----几个经典表单应用 jQuery整理笔记八----jQuery的Ajax jQuery整理笔记九----功能性表格开发

[设计模式整理笔记 一] 基础知识

[设计模式整理笔记 一] 基础知识 [导读] [设计模式整理笔记 一] 基础知识 [设计模式整理笔记 二] 简单工厂模式(Simple Factory) [设计模式整理笔记 三] 工厂模式(Factory) [设计模式整理笔记 四] 抽象工厂模式(Abstract Factory) [设计模式整理笔记 五] 创建者模式(Builder) [设计模式整理笔记 六] 工厂模式与创建者模式总结 [设计模式整理笔记 七] 原型模式(ProtoType) [设计模式整理笔记 八] 单例模式(Singlet

xmpp整理笔记:用户网络连接及好友的管理

xmpp中的用户连接模块包括用户的上线与下线信息展现,用户登录,用户的注册: 好友模块包括好友的添加,好友的删除,好友列表的展示. 在xmpp中 负责数据传输的类是xmppStream,开发的过程中,针对不同的传输内容,会调用不同的代理方法,在使用XMPPFramework开发时,只需要在不同的代理方法中,填写相同的代码即可. 往期回顾: xmpp整理笔记:xmppFramework框架的导入和介绍  http://www.cnblogs.com/dsxniubility/p/4307057.h

jQuery整理笔记八----jQuery的Ajax

Ajax,我一直读的是"阿贾克斯",据当时大学老师讲该读音出处是根据当年风靡欧洲的荷兰足球俱乐部阿贾克斯的名字来的,我觉得说法挺靠谱的. jQuery封装了Ajax的交互过程,用户不需要考虑XMLHttpRequest对象的兼容性问题以及使用XMLHttpRequest建立连接.发送请求.发送方式.接收方式等细节,利用jQuery定义 的几个简单方法,即可轻松实现客户端与服务端异步通信的问题,从而帮助开发人员从繁琐的技术细节中解脱出来,专心于业务层开发工作. 最初始的JavaScrip

python学习笔记七:条件&循环语句

1.print/import更多信息 print打印多个表达式,使用逗号隔开 >>> print 'Age:',42 Age: 42   #注意个结果之间有一个空格符 import:从模块导入函数 import 模块 from 模块 import 函数 from 模块 import * 如果两个模块都有open函数的时候, 1)使用下面方法使用: module1.open()... module2.open()... 2)语句末尾增加as子句 >>> import ma

jQuery整理笔记九----功能性表格开发

示例中用到的一些图片.插件.样式文件等下载地址:点我进入下载 过去在开发过程中关于table方面的jquery应用仅仅是局限于使用jquery操作table增加一行.删除一列等等操作.今天整理的跟过去用的不一样. 1.uiTableFilter uiTableFilter是一款表格数据行过滤插件,使用很简单,具体用法如下: $.uiTableFilter(table,phrase)  该函数包含两个参数,其中第一个参数为jQuery对象,即为jQuery方法匹配的表格,或者也可以是jQuery匹

PHP微信公众开发笔记(七)

PHP微信公众开发笔记系列 日期:2014.9.6 这篇日记是补昨天的,昨天没来得及写: 主要实现的功能:模糊检索.问答系统.帮助系统 修复了:_SESSION 的id 调整了验证机制 要注意的:mysql的语法问题.mysql的模糊匹配.PHP的关联数组好像用count计算的话其大小会有原有数据的两倍大(即数组中只有两个数据,count会得到4,这个需要再验证,好像是用到了foreach就出现了这个问题) 学到了:PHP中数组的操作 2014.9.10整理笔记: 写这个笔记的时候,在赶功能,所