由于PHP是弱语言类型,所以当使用字符串操作函数是,其他类型的数据也会被当作字符串来处理。
一、字符串定义与显示
字符串通过单引号、双引号来标志,前者将单引号内所有的字符都当作字符来处理,后者则不是。
字符串的显示可以使用echo()和print()函数,二者区别:print()具有返回值,返回1,而echo()则没有,所以echo()比print()要快一些,print()能应用于复合语句中,而echo()不能。另外echo可以一次输出多个字符串,而print不可以。
二、字符串的格式化
函数printf()将一个通过替换值建立的字符串输出到格式字符串中,语法格式为:
int printf(string $format [,mixed $args])
第一个参数$format是格式字符串,$args是要替换进来的值,格式字符串里的字符“%”指出了一个替换标记。
格式字符串中的每一个替换标记都由一个百分号组成,后面可能跟有一个填充字符、一个对齐方式字符、字段宽度和一个类型说明符。字符串的类型说明符为“s”。
所有的转换说明都以一个“%”开始,如果想打印一个“%”,必须使用“%%”。填充字符表明该字符用于填充结果,使结果为适当大小的字符串,默认情况下使用空格填充;对齐方式字符对字符串和数组有不同的作用,对于字符串,减号“-”使该字符串右对齐(默认为左对齐),对于数字,加号“+”使正数在输出的时候以加号开头;字段宽度是指字符串应该输出的宽度,如果字符串实际长度小于该值,则使用填充字符填充;类型说明符表示要替换进来的值将要转化的数据类型。
函数sprintf()所带的参数和printf()函数一样,但是返回的是内置的字符串,使得可以在变量中存储字符串供以后使用。
函数vprintf()允许在格式后面用数组作为参数,用法和printf()函数基本相同。
函数vsprintf()和vprintf()函数一样,可以用数组作为参数,但不使出字符串。
三、常用字符串函数
1.计算字符串长度
strlen()函数:int strlen(string $string)
该函数返回字符串的长度,1个英文字符长度为1个字符,1个汉字长度为2个字符,字符串中的空格也算一个字符。
2.将字符串改变大小写
strtolower()函数可以将字符串全部转化为小写,使用strtoupper()函数将字符串全部转化为大写。
ucfirst()函数可以将字符串的第一个字符改成大写,ucwords()函数可以将字符串中的每个单词的第第一个字母改成大写。
3.字符串裁剪
ltrim()、rtrim()、trim()函数分别用于删除字符串中最左边、最右边和两边与指定的字符,并返回剩余的字符串。
string trim(string $str[,string $charlist])
string rtrim(string $str[,string $charlist])
string ltrim(string $str[,string $charlist])
trim、ltrim、rtrim函数的默认删除字符
字符 | ASCII码 | 意义 |
"" | 32(0x20) | 空格 |
"\t" | 9(0x09) | 制表符 |
"\n" | 10(0x0A) | 换行 |
"\r" | 13(0x0D) | 回车 |
"\0" | 0(0x00) | 空字节 |
"\x0B" | 11(0x0B) | 垂直制表符 |
4.字符串的查找
strstr()函数和stristr()函数,两者功能、返回值都一样,只是stristr()函数不区分大小写。
strstr()函数的语法格式:string strstr(string $haystack,string $needle)
strstr()函数用于查找字符串指针$needle在字符串$haystack中出现的位置,并返回$haystack字符串中从$needle开始到$haystack字符串结束处的字符串。如果没有返回值,也没有发现$needle,则返回FALSE。strstr()函数还有一个同名函数strchr()。
5.字符串与ASCII码
使用ord()函数可以返回字符的ASCII码,也可以使用chr()函数返回ASCII码对应的字符。
四、字符串的比较
比较主要是对字符串的类型及大小写的比较。字符串的比较可以使用比较运算符“==”、“!=”、“===”、“!==”来进行比较,也可以使用比较函数来比较。
使用“!=”和“==”比较的两个对象不一定要类型相等,整型也可以和字符串比较。而“!==”和“===”比较的对象类型要严格相同才可能返回TRUE。
常用的字符串比较函数有:strcmp()、strcasecmp()、strncmp()和strncasecmp()。语法格式如下:
int strcmp(string $str1,string $str2)
int strcasecmp(string $str1, string $str2)
int strncmp(string $str1,string $str2,int $len)
int strncasecmp(string $str1,string $str2,int $len)
四个函数都用于比较字符串的大小,如果$str1比$str2大,则他们都返回大于0的整数;如果$str1比$str2小,则返回小于0的整数,如果两者相等,则返回0.
不同的是,strcmp()函数用于区分大小写的字符串比较;strcasecmp()函数用于不区分大小写的比较;strncmp()函数用于比较字符串的一部分,从字符串的开头开始比较,$len是要比较的长度;strncasecmp()函数的作用和strncmp()函数一样,只是不区分大小写。
五、字符串的替换
字符串的替换指的是使用指定的字符串替换原来字符串中的相关字符,以组成新的字符串来满足新的要求。
常用的就是str_replace()函数,语法如下:
mixed str_replace(mixed $search,mixed $replace,mixed $subject[,int &$count])
str_replace()函数使用新的字符串$replace替换字符串$subject中的$search字符串。$count是可选参数,表示要执行的替换操作的次数。
str_replace()函数对大小写敏感,还可以实现多对一,多对多的替换,但无法实现一对多的替换。
使用多对多替换时,第一个数组中的元素被第二个数组中对应的元素替换,如果有一个数组比另一个数组元素少,那不足的部分会当作空来处理。
substr_replace()函数实现替换字符串的一部分,语法格式:
mixed substr_replace(mixed $string,string $replacement,int $start[,int $length])
参数$string为原字符串,$replacement为要替换的字符串。
$start是开始替换的位置的偏移量,从0开始计算,如果为0或是一个正值,就是从字符串开始处计算的偏移量,如果是负值则是从字符串的末尾计算的偏移量。
$length是可选参数,表示要替换的长度,如果不给定从$start位置开始一直到字符串结束;如果$length为0,则替换字符串会插入到原字符串中;如果$length是正值,则表示用替换字符串替换掉的字符串成都;如果$length是负值,表示从字符串末尾开始到$length个字符为止停止替换。
六、字符串与HTML
1.将字符转换为HTML实体形式
函数htmlspecialchars()可以将字符转化为HTML的实体形式。
可以转化为HTML实体形式的特殊字符
原字符 | 字符名称 | 转换后的字符 |
& | AND记号 | & |
" | 双引号 | " |
' | 单引号 | '; |
< | 小于号 | < |
> | 大于号 | > |
htmlspecialchars()函数的语法格式如下:
string htmlspecialchars(string $string[,int $quote_style[,string $charset[,bool $double_encode]]])
参数$string是要转换的字符串,$quote_style、$charset和$doublt_encode都是可选参数。$quote_style指定如何转换单引号和双引号字符,取值可以是ENT_COMPAT(默认值,只转换双引号)、ENT_NOQUOTES(都不转换)和ENT_QUOTES(都转换)。$charset是字符集,默认为ISO-859-1。参数$double_encode如果为FALSE则不转换成HTML实体,默认为TRUE
htmlentities()函数也可以将特殊字符转换为实体,不过htmlspecialchars()函数只转换&、“、‘、<、>这5个字符,而htmlentities()函数则会把汉字也进行转化。
2.将HTML实体形式转换为特殊字符
使用htmlspecialchars_decode()函数可以将HTML的实体形式转化为HTML格式,html_entity_decode()函数可以把所有HTML实体形式转换为HTML格式
3.换行符的转换
在HTML文件中使用"\n",显示html代码时不能显示换行的效果,这时可以使用nl2br()函数,这个函数可以用html中的"<br/>"标记代替字符串中的换行符"\n"。
七、其他字符串函数
1.字符串与数组
(1)字符串转化为数组
使用explode()函数可以用指定的字符串分割另一个字符串,并返回一个数组。
array explode(string $separator ,string $string[,int $limit])
此函数返回由字符串组成的数组,每个元素都是$string的一个子串,它们被字符串$separator作为边界点分割出来。
如果设置了$limit参数,则返回的数值包含最多$limit个元素,而最后那个元素将包含$string的剩余部分。如果$limit参数是负数,则返回除了最后的-$limit个元素外的所有元素。
如果参数$separator为空字符串(""),explode()函数将返回FALSE,如果$separator所包含的值在$string中找不到,explode()函数将返回包含$string单个元素的数组。
(2)数组转化为字符串
使用implode()函数可以将数组中的字符串连接成一个字符串
string implode(string $glue,array $pieces)
$pieces是保存要连接的字符串的数组,$glue是用于连接字符串的连接符。
implode()函数还有一个别名,即join()函数。
2.字符串加密函数
crypt()函数完成加密功能
string crypt(string $str[,string $salt])
该函数完成的是单向加密功能,即字符串一旦被加密就无法转换成原来的形式。函数中$str是需要加密的字符串,第二个可选参数$salt是一个位字串,它能影响加密的暗码,进一步排除与计算攻击的可能性。
如果要获得更高的安全性,可以使用md5()函数,这个函数使用MD5散列算法,将一个字符串转换成一个长32位的唯一字符串,这个过程是不可逆的。
共同学习,写下你的评论
评论加载中...
作者其他优质文章