您的位置:首页 > 编程语言 > PHP开发

PHP字符串操作

2015-10-07 12:34 696 查看
1.单引号和双引号的区别

对于普通字符串来说,单/双引号没有什么区别:





对于变量的处理,单/双引号的效果则不一样了,双引号中的内容是由语法分析器解析过的,任何变量在双引号内都会被转换为它的值进行输出,而对于单引号无论是否包含变量,都会当做普通字符串进行原样输出:





【注意】在进行SQL查询之前,所有的字符串都必须添加单引号,以避免可能的注入漏洞和SQL注入。

2.字符串的连接符

PHP使用半角号“.”来连接字符串。

下面是使用直接连接和双引号连接、大于字符串:





3.去除字符串首尾的空格和特殊符号

3-1 trim(string str, [ string charlist ])

str是要处理的字符串,charlist是可选参数,提供需要过滤的特殊字符,当没有charlist参数时,trim()会自动过滤的字符包括:

\0(NULL、空值),\t(tab、制表符),\n(换行符),\x0B(垂直制表符),\r(回车符)," "(空格):





【注意】由1和2可以看出charlist的作用,由2和3可以看出,trim()函数中要是包含了第二个参数charlist,会覆盖掉默认的要过滤的字符。

3-2 ltrim(string str, [ string charlist ]) 去除字符串str左边的特殊字符,用法同trim();

3-3 rtrim(strin gstr, [ string charlist ]) 去除字符串右边的特殊字符,用法同trim()

4.转义、还原字符串

4-1 addslashes(string str) 用来为字符串str加入斜线“\”;

4-2 stripslashes(string str) 用于将addslashes()转义之后的字符串还原:





【注意】所有数据在插入数据库之前,有必要调用addslashes()函数进行字符串转义,以避免特殊字符串在插入数据库时出现错误。

4-3 addcslashes(string str, string charlist )

在str字符串中的charlist字符进行转义,str是要处理的字符串,charlist是必填参数,指定str中哪些字符需要进行转义,如果charlist中包含\n、\r等字符,将以C语言风格转换,而对于其他的非字母非数字字符,且ASCII码低于26以及高于126的字符均转换成八进制。

4-4 stripcslashes(string str)

用于还原addcslashes()转义之后的字符串:





5.获取字符串的长度

strlen( string str ) 获取指定字符串str的长度:





6.字符串的截取

string substr(string str, int start, [ int length ])

在字符串str中从第start开始截取,截取length长度的字符串,length可以省略,省略之后默认截取到字符串最后一个字符





【注意】substr()函数在截取中文时,如果截取的字符为奇数个,那么可能会导致截取的中文字符串出现乱码,这是因为中文有两个字符组成,substr()适合对英文字母进行截取,如要对中文字符串进行截取,最好的办法是调用substr()函数,编写一个自定义的函数。

7.字符串的比较

7.1 按照字节顺序比较

int strcmp(string str_1, string str_2)

按照字节的顺序比较两个字符串,如果两个字符串相等返回0,如果str_1大于str_2则返回大于0的数,如果str_1小于str_2则返回的值小于0;与strcmp()函数相似的是strcasecmp()函数,不同的是strcmp()区分大小写,而strcasecmp()不区分大小写比较:





7.2 按照自然排序进行字符串比较

int strnatcmp(string str_1, string str_2)

与strcmp()不同的是,sstrcmp()进行比较时,是按照字符的顺序,一个一个进行比较,strcmp()比较10与2时,得到的结果是10>2;而strnatcmp()函数对于非数字字符与strcmp()一致,但当遇到数字时,会比较整个数字的大小,同样的利用strnatcmp()比较10和2,结果则变成了10>2,strcmp()函数有一个对应的函数strcasecmp()函数进行不区分大小写比较,同样的,strnatcmp()也有相似的函数strnatcasecmp()进行不区分大小写的比较:





7.3 指定从位置进行比较

int strncmp(string str_1, string str_2, int len)

比较字符串中前len个字符。





8. 字符串的检索

8.1 string strstr(string str, string needle)

在字符串str中检索needle首次出现的位置到str末尾的子字符串,如果检索成功,则返回检索到的字符串,若检索不到,则返回false:





8.2 int substr_count(string str, string needle)

在字符串str中检索needle出现的次数:





9.替换字符串

9.1 mixed str_ireplace(mixed searhc, mixed replace, mixed str, [ int count ])

在字符串str中检索search,检索到之后使用replace替换,count是可选参数,表示从头开始检索的次数,若不包含这一项,则表示全部检索:





【注意】str_ireplace()函数在执行替换时不区分大小写,如果需要区分大小写应该使用str_replace(),使用方法同str_ireplace()。

9.2 substr_replace(string str, string replace, int start, [ int length ])

将字符串str中的第start开始、长度为length的字符串替换成字符串replace。





10.格式化字符串

string number_format(float number, [ int num_decimal_places ] , [ string dec_seperator ], [ string thousands_seperator ])

number_format()函数的形参可以是1个(number),可以是2个(number、num_decimal_places ),或者是4个(number、num_decimal_places 、dec_seperator 、thousands_seperator ):

------------------------------------------------------------------------------------------------------------------------------------------

number_format(float number):将number舍去小数点后的值,且每一千就会以逗号(,)隔开;

number_format(string number, int num_decimal_places):将number的小数点后的第num_decimal_places 位也保存,且每一千用逗号隔开;

number_format(float number, int num_decimal_places , string dec_seperator, string thousands_seperator ):除了上面的格式化方式,会使用dec_seperator 代替小数点(.),使用thousands_seperator 来代替每一千分割的逗号(,)。





11.字符串的分割

array explode(string separator , string str, [ int limit ])

将字符串str,以separator分割成为数组, limit是可选参数,表示返回的数组中最多包含的元素的个数:





12.字符串的合成

string implode(string separator, array pieces)

使用指定的分割符separator,将数组pieces中的各元素连接成一个字符串:





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: