【细说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实体。

&转换为&amp;
"转换为&quot;
'转换为&#039;
<转换为&lt;
>转换为&gt;
在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()函数相同。

0 0
原创粉丝点击