【细说PHP学习】第十一章 字符串处理
来源:互联网 发布:oracle数据库基本语句 编辑:程序博客网 时间:2024/05/17 06:20
11.1 字符串的处理介绍
11.1.1 字符串的处理方式
C语言中,字符串是作为字节数组处理的,在Java语言中,字符串是作为对象处理,而PHP中则把字符串作为一种基本的数据类型来处理。
但对一些比较复杂的字符串操作,则需要借助PHP所支持的正则表达式来实现。
11.1.2字符串类型的特点
PHP是弱类型语言,所以其他类型的数据一般都可以直接用于字符串操作函数里,而自动转换成字符串类型进行处理。
<?php echo substr("1234567",2,4)."<br>"; echo substr(1234567,2,4); echo hello;?>
<?php $str="lamp"; echo $str."<br>"; echo $str[0]; echo $str[1]; echo $str[2]; echo $str[3]."<br>"; echo $str[0].$str[1];?>
但将字符串看作字符集合时,并不是真的数组,不能使用数组的处理函数操作。由于PHP脚本引擎对于中括号方法可能会带来二义性,自PHP4起已过时,代替它的是使用花括号,为了向下兼容,仍然可以使用方括号。
<?php $str="lamp"; echo $str{0}; echo $str{1}; echo $str{2}; echo $str{3}."<br>"; echo $str{0}.$str{1}; $last=$str{strlen($str)-1}; $str{strlen($str)-1}='e'; $str{1}="nginx";//如果使用一个字符串去修改另一个字符串中的第2个字符,则结果为lnme(只修改第二个首字母,而且之前已经改过最后一位)?>
11.1.3 双引号中变量解析总结
<?php $lamp=array('os'=>'Linux','webserver'=>'Apache','db'=>'MySQL','language'=>'php'); echo "A OS is $lamp[os]"; //可以解析,双引号对于数组索引 echo "A OS is $lamp['os']"; //不能解析,如果在关联数组下标使用引号就必须使用花括号 echo "A OS is {$lamp['os']}"; //可以解析,如果在对关联数组下标使用引号就必须使用花括号,否则将出错 echo "A OS is {$lamp[os]}"; //可以解析,但是PHP将数组下标看成常量名,并且当不存在时将变量名转换为字符中,效率低 echo "This square is $square->width meters broad."; echo "This square is $square->width00 centimeters broad."; //不能解析,可以用花括号解决 echo "This square is {$square->width}00 centimeters broad."; //可以解析?>
11.2 常用的字符串输出函数
1. 函数echo()
该函数用于输出一个或多个字符串,是在PHP中使用最多的函数。不过如果希望向echo()传递一个或多个参数,那么使用括号会发生解析错误。
void echo (string arg1[,string...])
2. 函数print()
该函数的功能和echo()的一样,它有返回值,若成功则返回1,失败则返回0。
3. 函数die()
该函数是exit()函数的别名。如果参数是一个字符串,则该函数就会在退出前输出它,如果参数是整数,则会被作为退出状态(状态0为退出)。
<?php $url="http://www.baidu.com"; fopen($url,"r") or die("Unable to connect to $url"); //如果打开失败则输出一条消息并退出程序?>
4. 函数printf()
该函数用于输出格式化的字符串,和C语言中的同名函数用法一样。
printf(format,arg1,arg2,...,argn)
5. 函数sprintf()
该函数的用法和printf()相似,但它不是输出字符串,而是把格式化的字符串以返回值的形式写入到一个变量中,这样就可以在需要的时候使用格式化后的字符串。
<?php $num=12345; $txt=sprintf("%0.2f",$num); echo $txt;?>
111.3 常用的字符串格式化函数
字符串格式化就是将字符串处理为某种特定的格式。
11.3.1 去除空格和字符串填补函数
PHP中通过ltrim()、rtrim()和trim()函数完成工作。
string ltrim (string str[, string charlist])//从字符串左侧删除空格或其他预定义字符string rtrim (string str[, string charlist])//从字符串右侧删除空白字符或其他预定义字符string trim (string str[, string charlist])//从字符串的两端删除空白字符和其他预定义字符
处理后的结果都会以心字符串形式返回,不会在原字符串上修改。第一个参数为str待处理的字符串,而第二个参数charlist为过滤字符串,用于指定希望去除的特殊符号。如果不指定过滤字符串,默认情况下会去掉下列字符:
” “:ASCII为32的字符,即空格
“\0”:ASCII为0的字符,即NULL
“\t”:ASCII为9的字符,即制表符Tab
“\n”:ASCII为10的字符,即新行
“\r”:ASCII为13的字符,即回车
11.3.2 字符串大小写的转换
函数strtoupper()用于将给定的字符串全部转换为大写字母;
函数strtolower()用于将给定的字符串全部转换为小写字母;
函数ucfirst()用于将给定的字符串中的首字母转换为大写,其余字符不变;
函数ucwords()用于将给定的字符串中全部以空格分隔的单词首字母转换为大写。
这些函数只是按照它们说明中描述的工作方式,要想确保一个字符串的首字母是大写字母,而其余的都是小写字母,就需要使用复合的方式——
<?php $lamp="lamp is composed of Linux、Apache、MySQL and PHP"; echo ucfirst(strtolower($lamp));?>
11.3.3 和HTML标签相关的字符串格式化
1. 函数nl2br()
nl2br()函数就是在字符串中的每个新行\n
之前插入HTML换行符<br />
。
2. 函数htmlspecialchars()
string htmlspecialchars(string string[,int quote_style[,string charset]])
PHP中提供的htmlspecialchars()函数就可以将一些预定义的字符串转换为HTML实体。
&
转换为&
"
转换为"
'
转换为'
<
转换为<
>
转换为>
在PHP中还提供了htmlentities()函数,可以将所有的非ASCII码字符转换为对应的实体代码。
函数stripslasher()的功能是去掉反斜线“\”,如果有连续两个反斜线,则只去掉一个。与之对应的是另一个函数addslasher()。
函数htmlspacialchars()是将HTML中的标记符号转换为对应的HTML实体,有时直接删除用户输入的HTML标签,也是非常有必要的。
PHP中提供的strip_tags()函数默认就可以删除字符串中所有的HTML标签,也可以选择性地删除一些HTML标记。
string strip_tags(string str,[string allowable_tags])
第一个参数提供了要处理的字符串,第二个参数是一个可选的HTML标签列表,放入该列表的HTML标签将被保留。
11.3.4 其他字符串格式化函数
1. 函数strrev()
该函数的作用是将输入的字符反转,只提供一个要处理的字符串作为参数,返回反转后的字符串如下:
<?php echo strrev("http://www.lampbrother.net"); //反转后输出:ten.rehtorbpmal.www//:ptth
2. 函数number_format()
number_format()函数通过千位分组来格式化数字
string number_format(float number[,int decimals[,string dec_point,string thousands_sep]])
3. 函数md5()
md5()函数的作用就是将一个字符串进行MD5算法加密,默认返回一个32位的十六进制字符串。
string md5(string str[,bool raw_output]) //进行MD5算法加密演算
11.4 字符串比较函数
11.4.1 按字节顺序进行字符串比较
要按字节顺序进行字符串的比较,可以使用strcmp()和strcasecmp()两个函数,其中函数strcasecmp()可以忽略字符串中字母的大小写进行比较。
int strcmp(string str1,string str2)int strcasecmp(string str1,string str2)
如果str1等于str2则返回0
如果str1大于str2则返回1
如果str1小于str2则返回-1
11.4.2 按自然排序进行字符串比较
使用strnatcmp()函数按自然排序法比较两个字符串,该函数对大小写敏感, 其使用格式与strcmp()函数相似。
在PHP中也提供了这个函数的忽略大小写版本的函数strnatcasecmp()用法和strnatcmp()函数相同。
- 【细说PHP学习】第十一章 字符串处理
- 【细说PHP学习】第十五章 文件系统处理
- 【PHP自学笔记】第十一章 图形图像处理
- 【细说PHP学习】第十三章 PHP的错误和异常处理
- 【细说php】16章 关于php动态图像处理
- PHP字符串处理学习笔记
- 【细说PHP学习】第九章 PHP中的数组与数据结构
- 【细说PHP学习】第十章 PHP面向对象的程序设计
- 【细说PHP学习】第十四章 PHP的日期和时间
- Scala学习第十一弹 字符串
- 第十一章 异常处理
- 第十一章 异常处理
- 第十一章 异常处理
- 细说PHP 学习笔记(二)
- 细说PHP 学习笔记(三)
- 细说PHP 学习笔记( 四)
- 细说PHP 学习笔记(五)
- 【细说PHP学习】第十七章 MySQL数据库概述
- 记真实自己,炫精彩人生---《爱记》app使用体验
- Mac下使用Android Studio 获取 SHA1和MD5
- struts2的工作流程
- java 代理模式
- hunnu OJ 11567 Escaping(拆点型最大匹配/网络流)
- 【细说PHP学习】第十一章 字符串处理
- Spring监听器与proxool.xml(数据库连接池)
- Android典型界面设计(5)——使用SlidingMenu和DrawerLayout分别实现左右侧边栏
- IDW插值服务
- poj 2796
- objective-C中没有"接口"与"泛型"这样的说法,但有正式协议protocal 和 一种特殊的指针id类型
- Solr Cache使用介绍及分析
- 利用 gnuplot 绘制时间序列图 http://blog.csdn.net/liyuanbhu/article/details/8497582
- JPA对应的数据库字段大小写问题