PHP字符串操作
1、字符串格式化
1)去除空格
trim():去除字符串开始位置和结束位置的空格;
ltrim():去除字符串左端的空格;
rtrim():去除字符串右端的空格;
2)格式化输出
printf(string format,mixed args):string:返回一个新的字符串,用法同C语言;
sprintf(string format,mixed args ):void:不返回字符串,直接覆盖原来的字符串,用法同C;
nl2br(string):使用HTML格式化,在string所有新行之前插入<br/>(将所有“\n”替换成<br/>);
vprintf(),vsprintf():接收的参数 :格式化字符串,参数数组;
3)格式化字符串(储存到数据库之前的预处理)
addslashes():为字符串参数的特殊字符添加(\);
stripslashes():反引用(\);
4)大小写转换
strtoupper():将字符串全部转化为大写;
strtolower():将字符串全部转化为小写;
ucfirst():将字符串首字母转化为大写;
ucword():将字符串每一个单词首字母转化为大写;
2、字符串的连接和分割
1)全分割和组装:
explode(separater,string):string必须是全大写或全小写,使用separater分割string,返回array;
implode(separater,array)/ join():使用separater组装array,返回string
2)单项分割:
strtok(str,separater):每次有separater令牌截取一段string,同时指针前移,(重置指针:将string重新传个给该函数);
substr(string,start,[length]):获取string从start开始的字串;
注:strat为负数时,从尾部开始计数数位;length为负数时,从尾部开始计数忽略的数位;
3、字符串的比较
1)字符串的大小比较
strcmp(string1,string2):二进制安全比较,区分大小写,返回int;
strcasecmp(string1,string2):二进制安全比较,不区分大小写;
strnatcmp(string1,string2):自然顺序比较,区分大小写;
2)字符串长度:
strlen():测试字符串长度;
4、字符串的查找和替换
1)查找字串的字串:
strstr(haystack,needle)/strchr( ):从haystack中查找needle,返回needle第一次出现到结尾的haystack字串/false;
stristr():strstr()的不区分大小写版本;
strrchr(haystack,needle):返回needle最后一次出现到结尾的haystack字串/false;
strpos(haystack,needle):返回needle在haystack第一次出现的位置(int)/false;
strrpos():返回neddle最后一次出现的位置;
※strpos()效率比strstr()要高;
strpos()判断:if(strpos($example,'needle')===false){ }
2)替换字串的子串:
str_replace(mixed neddle,mixed new_needle, mixed haystack ,[int count]):用new_needle替换haystack中的所有needle,count可以规定替换的次数,needle可以是array,string或其他;
substr_replace(string,replacement,start,[length]):用replacement替换string的start开始的字串;
php与正则表达式
1、正则表达式匹配:
ereg(string pattern,string search,array):int: 在search中搜索能与pattern相匹配的字符串,并将其装载在array中;
eregi():ereg()的忽略大小写版本;
int preg_match ( string
$pattern
, string
$subject
[, array &$matches
[, int $flags
= 0 [, int$offset
= 0 ]]] )※使用preg_match( )来代替ereg;
※没有匹配——返回false,没有传入array或search长度为0——返回1;
array[0]全部匹配项,array[1]array[2]...其他匹配项;
2、正则表达式替换字符串
ereg_replace(pattern,replacement,search):string:用replacement替换search中的pattern匹配部分;
eregi_replace():不区分大小写版本;
※一般对于相同的功能,正则表达式函数的运行效率要低于字符串函数;
3、正则表达式查询表
用于POSIX风格的正则表达式字符类
匹配
|
类
|
匹配
|
类
|
[[:alnum:]]
| 文字数字字符 |
[[:punct:]]
| 标点符号 |
[[:alpha:]]
|
字母字符
|
[[:blank:]]
| 制表符和空格 |
[[:lower:]]
| 大写字母 |
[[:space:]]
| 空白字符 |
[[:upper:]]
| 小写字母 |
[[:cntrl:]]
| 控制符 |
[[:digit:]]
| 小数 |
[[:print:]]
| 所有可打印字符 |
[[:xdigit:]]
| 十六进制数字 |
[[:graph:]]
| 出空格外的可打印字符 |
在POSIX正则表达式中,用于方括号之外的特殊字符
字符
|
意义
|
字符
|
意义
|
\
|
转义字符
|
( )
|
子模式,括号内的字串完全匹配,如(very)*
|
^
| 在字符串的开始匹配 |
{ }
|
最小/最大量记号
|
$
| 在字符串末尾匹配 |
*
|
匹配0次或更多次
|
.
|
匹配除了(\n)之外的所有字符
|
+
|
匹配1次或更多次
|
|
|
选择分支的开始
|
?
|
只允许匹配1次,但非必须匹配
|
在POSIX正则表达式中,用于方括号内外的特殊字符
字符
|
意义
|
字符
|
意义
|
\
| 转义字符 |
^
|
非,仅用在开始位置
|
-
| 用于指明字符范围 |
|
|