主要包括以下方面:
- 字符串的格式化
- 字符串的连接与分割
- 字符串的比较
- 使用字符串函数匹配和替换子字符串
- 使用正则表达式(下一篇文章专门总结)
1、字符串的格式化:chop(rtrim)、ltrim、和trim
用来清理字符串的空格,如果要将字符串存入文件或者数据库,或者与其它字符串进行比较,就需要先清理空格。 例如:$name = trime($_POST[‘name’]); string trim ( string $str
[, string $charlist
] ) //函数trim的原型 trim函数默认是去除空格的,但是第二个参数可以指定一个需要过滤的字符列表,例如: $trimmed = trim($hello, ‘HdWr’);
2、使用HTML格式化:nl2br()函数,以便显示
该函数将字符串中的换行符替换成HTML的<br>,以便在浏览器中显示
3、有三个格式化字符串函数print、printf、sprintf以便显示
使用printf和sprintf可以完全替代number_format,比如格式字符串中用%.2f,可以格式化2位小数 格式化字符串的格式: %[‘填充字符][-][宽度][.精度]类型 如果想打印%,需要使用“%%”转换;
- 填充字符:可选,用来填充变量直至所指定的宽度;默认为空格,如果指定了空格或者0就不需要’作为前缀;否则就加上’作为前缀
- 字符-:可选,指明左对齐,还是默认的右对齐
- 宽度:指定被替换的变量有多长的空间
- 精度:必须前面带个小数点,指定小数点后面需要显示的位数
以下是格式化的类型码:
类型 | 意义 |
b | 解释为整数,并作为二进制输出 |
c | 解释为整数,并作为字符输出 |
d | 解释为整数,并作为小数输出 |
f | 解释为双精度,并作为浮点数输出 |
o | 解释为整数,并作为八进制输出 |
s | 解释为字符串,并作为字符串输出 |
u | 解释为整数,并作为非指定小数输出 |
x | 解释为整数,并作为带有小写字母a~f的十六进制输出 |
X | 解释为整数,并作为带有小写字母A~F的十六进制输出 |
注意:参数顺序和转换说明顺序不一定相同,比如%2\$.2f,就是用列表的第二个参数来替换该格式码 有更好用的两个函数,它不接受参数列表,而是接受一个数组:
int vprintf ( string
$format
, array $args
)string vsprintf ( string
$format
, array $args
)
比如:
4、改变字符串中的字母大小写
- strtoupper($str):将字符串转换成大写
- strtolower($str):将字符串转换成小写
- ucfirst($str):如果字符串第一个字符是字母,将该字符转为大写
- ucwords($str):将字符串每个单词的第一个字母转换为大写
5、格式化字符串以便存储:addslashes()和stripslashes()
如果将字符串存入数据库,以下几个字符串中的字符会被解释成控制符,从而引发问题:
- 引号:双引号和单引号
- 反斜杠(\)
- NULL字符
解决方法,是在这三类字符前面,加上转义字符\,变成了[\”, \’, \\, \NULL] PHP提供了两个专门用于转义字符串的函数:
string addslashes ( string
$str
)//为特殊字符加上转义字符\ string stripcslashes ( string $str
)//与前者想法,它去掉转义字符
比如:
注意:如果服务器开启了magic_quotes_gpc选项,GET、POST和COOKIE数组的变量自动被包括在引号内,显示的时候如果不正常,可以用stripcslashes 去掉引号就可以了。可以用get_magic_quotes_gpc()函数来检查该变量是否被打开。
6、使用函数explode()、implode()和join()
array explode ( string
$delimiter
, string $string
[, int $limit
] )
该函数使用定界符分割字符串,返回子字符串的数组,limit限制分成字符串块的数量
结果:
而implode和join完成同样的功能,就是提供一个定界符,把数组合并成一个字符串:
string implode ( string
$glue
, array $pieces
)
例如:
7、strtok()每次根据分隔符取出一个字符串(挨个处理)
string strtok ( string
$str
, string $token
)
分隔符可以使字符串或者字符,如果是字符串,也当成字符的组合来处理:
注意:分割是根据字符来进行,而不是字符串
8、使用substr()函数获得字符串的子字符串
string substr ( string
$string
, int $start
[, int $length
] )
- 如果没有length,start为正则返回从start开始到末尾的字符串,为负则取得字符串末尾的start个字符
- 如果length为正,则指明个数;如果为负则指明截取的子串到字符串末尾往前数length个字符
有点解释不清楚,下面有例子,一看就明白了:
9、字符串的比较和长度
- strcmp,若str1等于str2返回0,若str1>str2返回正数,若str1<str2返回负数,注意,不一定是正负1
int strcmp ( string
$str1
, string $str2
)
- strcasecmp的用法和strcmp一模一样,只不过它不计大小写
int strcasecmp ( string
$str1
, string $str2
)
- strnatcmp 和strncasecmp 是按照自然排序进行的,比如strcmp中2>12,但是这里2<12
int strnatcmp ( string
$str1
, string $str2
) int strncasecmp ( string $str1
, string $str2
, int $len
)
- strlen返回给定字符串的长度
int strlen ( string
$string
)
10、查找字符串(子串非位置):strstr、strchr、strrchr和stristr
- strstr()和strchr()在PHP中完全相同,这两个函数区分大小写,可用于字符或者字符串
string strstr ( string
$haystack
, mixed $needle
[, bool $before_needle
= false ] )
第三个参数如果为TRUE,返回找到的串前面的部分;默认返回后面的部分;找不到返回false;
- stristr和strstr()使用方法一模一样,只是不管大小写
- strrchr()和strstr()几乎一样,只是会从最后出现目标关键字位置的前面返回被搜索字符串
string strrchr ( string
$haystack
, mixed $needle
)
11、查找子字符串的位置:strpos()、strrpos()
函数strpos()和strrpos()和strstr()类似,但是返回的不是子字符串,而是返回字符串在目标串的位置。
int strpos ( string
$haystack
, mixed $needle
[, int $offset
= 0 ] )
如果offset为非0,那么就会从offset开始的地方开始搜索子串,注意,因为找不到会返回false,这和PHP的0是相等的,也就是第一个字符,因此比较的时候,要用全比较===:
strrpos和strpos()一样,只是返回的是查找串在目标串的最后出现的位置
12、字符串的替换str_replace和substr_replace
mixed str_replace ( mixed
$search
, mixed $replace
, mixed $subject
[, int &$count
] )
- 功能:用replace替换subject中所有的search,并返回subject替换后的结果
- 第四个参数count,表示要执行的替换操作的次数,是回调变量,被传回使用
- 注意,前三个参数,都可以传入数组。传入搜索的数组,传入替换数组,传入目标字符串数组,返回的是替换后的数组
mixed substr_replace ( mixed
$string
, mixed $replacement
, mixed $start
[, mixed $length
] )
- 该函数,将从start开始的length个字符,替换成
replacement