PHP字符串操作和正则表达式

时间:2023-01-03 12:30:04
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正则表达式中,用于方括号内外的特殊字符
字符 意义 字符 意义
\ 转义字符 ^ 非,仅用在开始位置
- 用于指明字符范围