PHP初学之字符串函数
按功能可分为九类;
番外;先说一下系统函数的模式
以int mb_strlen(string $str [,string $encoding]);为例
一、 字符串长度函数;
1、 获取字符串的字节长度,
int strlen(string $str);
如果 string
为空,则返回 0
注意;一个汉字在utf-8中占3个字节,在gbk里占2个字节
2、 获取字符串的字符个数,
int mb_strlen(string $str [,string $encoding]);
$encoding;意为编码格式。Utf-8或gbk,
二、 查找字符串位置函数;
1、 查找父串中子串首次出现的位置
mixed strpos ( string $haystack
, mixed $needle
[, int $offset
= 0 ] )
mixed;混合类型,意思是类型不止一种,有多种情况,
haystack
;父串
needle
;子串或整型数值,
在计算机的ascii字符集中,65到90,代表大写的A到Z,97到122,代表小写的a到z,如果这个参数是字符串,那么正常的查找,如果这个参数是整型int,那么它会换算到对应的字母
offset
;偏移量,可选填,在父串的这个位置之后开始查,即这个位置之前的数据跳过
注意,没有找到返回false
2、 查找父串中子串首次出现的次数
int substr_count ( string $haystack
, string $needle
[, int $offset
= 0 [, int $length
]] )
haystack
;父串
needle
;子串,区分大小写
offset
;偏移量,可选填,在父串的这个位置之后开始查,即这个位置之前的数据跳过
length
;可选填,在偏移量之后的搜索长度
三、 字符串替换函数;
1、 子字符串替换
mixed str_replace ( mixed $search
, mixed $replace
, mixed $subject
[, int &$count
] )
search
;被替换的数据
replace
;要替换成的数据
subject
;父串
count
;
如果被指定,它的值将被设置为替换发生的次数。即。使用这个参数的时候,不要给它具体的值,在这个函数运行完的时候,它会自动生成值,这个值就是替换了几次,
注意;
如果 replace
的值的个数少于 search
的个数,多余的替换将使用空字符串来进行。就是说他们两个所占的字节数要相同
如果 search
是一个数组而 replace
是一个字符串,那么 search
中每个元素的替换将始终使用这个字符串。该转换不会改变大小写。就是说replace
可以替换父串中的多个子串,
如果都是数组的时候,替换时会有先后顺序;如;str_repace(array(‘hi’,hello’),array(‘hello’,hi’),$str);
会发现str里只有hi了
2、
替换单个字符
string strtr ( string $str
, string $from
, string $to
)
string strtr ( string $str
, array $replace_pairs
)
str
;父串
from
;被替换的字符
to
;要替换成的字符
replace_pairs
可以用来取代 to
和 from
参数,因为它是以 array('from' =>'to', ...) 格式出现的数组。
注意;
如果 from
与 to
长度不相等,那么多余的字符部分将被忽略。 str
的长度将会和返回的值一样。
这个函数一般用来替换字符串中符号,数字的全角半角。
四、 截取子字符串函数(双字节);
1、 截取子串
string substr ( string $string
, int $start
[, int $length
] )
string
;父串
start
;开始的位置(按字节算)
length
;正
数时,代表截取的长度,负数时,代表截取结束的位置
2、 截取子串在父串中第一次出现前或后的数据
string strstr ( string $haystack
, mixed $needle
[, bool $before_needle
= false ] )
haystack
;父串
needle
;子串
before_needle
;默认为
false,意为,截取首次出现后的数据,如果改为true,就是截取首次出现前的数据
3、 截取子串在父串中最后一次出现后的数据
string strrchr ( string $haystack
, mixed $needle
)
haystack
;父串
needle
;子串
五、 分割、连接、反转函数;
1、 分割,将字符串转换为数组
array str_split ( string $str
[, int $split_length
= 1 ] )
str
;父串
split_length
;分割完后每个单元的长度,默认1
2、 根据指定的连接符,将数组拼成字符串
string implode ( string $glue
, array $pieces
)
glue
;连接符
pieces
;待拆数组
string implode ( array $pieces
);不用连接符,直接拼
pieces
3、 根据指定的分割
符,把字符串拆成数组
array explode ( string $delimiter
,string $string
[, int $limit
] )
delimiter
;分割
符,如逗号等
string
;父串
limit
;分割成多少份,正数时,多余的数据都放最后一组里,负数时,最后一组不要了,0代表1.
4、 反转字符串,把‘abcd‘反转成’dcba‘
string strrev ( string $string
)
六、 去除、增加空格函数;
1、 将字符串分割成小块,就是往父串里添加连接符,如逗号之类的
string chunk_split (string $body
[, int $chunklen
= 76 [, string $end
= "\r\n" ]] )
body
;父串
chunklen
;分割尺寸
end
;连接符,同时会在子串的末端显示,默认是换行符
七、 HTML代码/数据库安全 处理有关函数;
1、 转义,对字符串里某些符号进行转义
string addslashes ( string $str
)
str
;父串
在数据库操作中‘.“.\.null.会崩库,
addslashes这个函数会对这些可能产生破坏的符号进行转义,相当于自动化的给父串里的某些符号填加了一个转义符(\)
2、反转义,与1相反,去除串里的转义符(\)
string stripslashes( string $str
)
str;
父串
3、将特殊的 HTML 实体转换回普通字符,意为,在HTML里显示某些系统默认不显示的符号
string htmlspecialchars_decode( string $str
[, int $flags
= ENT_COMPAT | ENT_HTML401 ] )
str
;父串
flags
;
指定如何处理引号和使用哪种文档类型
4、与3相反
string htmlspecialchars( string $string
[, int $flags
= ENT_COMPAT | ENT_HTML401 [, string $encoding
= ini_get("default_charset") [, bool $double_encode
= true ]]] )
八、 比较字符串函数;
1、 二进制安全字符串比较(区分大小写)
int strcmp ( string $str1
, string $str2
)
如果str1
小于 str2
返回 < 0; 如果 str1
大于 str2
返回 > 0;如果两者相等,返回 0。
九、 字符大小写转换函数;
1、 转小写
string strtolower ( string $string
)
2、 转大写
string strtoupper ( string $string
)
3、 字符串首字母大写
string ucfirst ( string $str
)
练习;获取文件的后缀,如;a.jpeg.exe
$file=a.jpeg.exe;
1、 return strrchr ( $file , ”.” )//直接找最后一个点后面的
2、 substr ( $file ,strrpos ( $file, ”.” ) )//先找点最后一次出现的位置(strrpos),再根据位置截
3、 strrev (substr ( strrev ( $file) ,0 , strpos (strrev ( $file ) , ”.” ) ) )//先把字符串反过来,再找第一个点的位置,然后截取0到3的子串,最后再反转一次
4、 pathinfo ( $file ,PATHINFO_EXTENSION) //调用系统函数pathinfo,他的作用是智能对文件名分析出若干的数据,生成一个数组,其中有一个参数extension的作用就是文件的后缀。