配色: 字号:
php 字符串函数
2016-11-02 | 阅:  转:  |  分享 
  
http://www.cnblogs.com/leokou/archive/2011/06/07/2074370.html{php字符串函
数}php操作字符串在Web应用中,用户和系统的交互基本上是用文字来进行的,因此系统对文本信息,即字符串的处理非常重要。文本字符串
操作内容很多,本节将一一介绍。3.1.1?去除空格和其他特殊符号有时,需要去掉字符串中的空格或者其他没有意义的符号。例如,在一个
电子商务应用中,当用户填写订单的内容时(如联系地址),可能输入一些空格、句号等字符,系统希望在存储之前把它们去掉,只剩下有意义的信
息。为了完成类似于上述需求的问题,PHP4及以上版本提供了4个去除字符串中特殊符号的函数。stringtrim(string
str[,stringcharlist]):去除字符串str首尾处空格或其他特殊符号。stringltrim(strin
gstr[,stringcharlist]):去除字符串str首的空格或其他特殊符号。stringrtrim(stri
ngstr[,stringcharlist]):去除字符串str尾的空格或其他特殊符号。stringchop(stri
ngstr[,stringcharlist]):功能同rtrim()。以上函数的第1个参数str为待操作的字符串,第2个可
选参数charlist指定想要去除的特殊符号,当缺省时默认值为去掉下列字符:空格("")、制表符(\t)、换行符(\n)、回车符
(\r)、空值(\0)。还可以使用“..”通过第2个参数指定需要去除一个范围内的字符,例如“a..d”指去掉ASCII码值介于a和
d之间的字符,即a、b、c、d。下面以trim()为例说明上述函数的使用。?12手册''";4???echo$init_str."#
";5???$new_str=addcslashes($ini
t_str,"''");6???echo$new_str."#
";7???$init_str2=stripcsla
shes($new_str);8???echo$init_str2."#
";9????>代码在第5行在$init_s
tr中的‘’’前加上了‘\’,又在第9行将其去掉。3.1.3??生成HTML元素HTML元素的书写非常麻烦,下面简单列出一些常用字
符在HTML中的表示方式。''&'':''&''双引号‘"’:''"''单引号‘''’:'''''''<'':''&
lt;''''>'':''>''此处,称''&''等为HTML元素,''&''等为其显示字符串。例如,若想在页面上的显示“href=''test''>链接”,HTML应写为“<ahref='test'>Test&
lt;/a>”,否则,将只在页面上显示一个链接信息。PHP提供了下面的函数来自动转化HTML元素。stringhtmls
pecialchars(stringstr[,intquote_style[,stringcharset]]):把一
些常用的HTML元素转换为显示字符串。stringhtmlentities(stringstr[,intquote_s
tyle[,stringcharset]]):把所有的HTML元素转换为显示字符串。stringhtml_entity_
decode(stringstr[,intquote_style[,stringcharset]]):把显示字符串转
化为HTML元素。上面函数中,参数str表示原始字符串;可选参数quote_style确定是否转换双引号和单引号,取值范围为{E
NT_COMPAT,ENT_QUOTES,?ENT_NOQUOTES},分别表示只转换双引号、全转换、全不转换,缺省时默认
值为ENT_COMPAT;第3个参数charset指定了转换中所用的字符集。PHP4及以上版本所支持的字符集参考表3.1。表3.1
??????????????????????????????????????????????PHP4及以上版本支持的字符集字符
集说明ISO-8859-1西欧字符集ISO-8859-15西欧字符集扩展UTF-8兼容ASCII的宽字节字符集cp1252西
欧字符集,Windows系统默认BIG5繁体中文,用于中国台湾省GB2312简体中文,用于中国大陆BIG5-HKSCS繁体中文扩展
,用于中国香港Shift_JIS日文EUCJP日文下面的示例中,首先使用htmlentities()函数得到一个HTML语句的显示
字符串,然后再用html_entity_decode()函数重新把显示字符串转回HTML元素。运行结果如图3.1所示。12lor=red>学习!";4???$a=htmlentities($orig,ENT_COMPAT,
"GB2312");5???$b=html_entity_decode($a);6???echo$a;//I''ll
"walk"the<b>dog</b>now7???echo$b;//I
''ll"walk"thedognow8????>图3.1?PHP生成HTML元素示例注意函数html_e
ntity_decode()只支持PHP4.0.3及以上版本。除上面所提到的3个函数之外,用于HTML元素操作的函数还包括nl2b
r()、get_html_translation_table()等,功能与上述函数类似,本书不再一一详述。3.1.4??分解字符串
分解字符串是指把一个字符串通过特殊的符号分解为许多子串。例如,时间字符串“2005-01-0112:59:59”可以利用符号“-
”、空格和“:”分解为年月日时分秒具体的值。PHP提供了下列函数完成类似功能:arraysplit(stringpatter
n,stringstr[,intlimit])其中,参数pattern指定了作为分解标识的符号;str为待操作的原始串;
第3个可选参数limit为返回子串个数的最大值,缺省时为全部返回。函数的返回值为数组,将在3.2节对其进行介绍。此处,可以暂时把函
数返回值理解为多个子串。下面的示例可以把字符串“2005-01-0112:59:59”分解为年月日时分秒子串。12($year,$month,$day,$hour,$minite,$second)=split(''[-:]'',$date)
;5???echo"{$year}年{$month}月{$day}日{$hour}时{$minite}分{$second}秒r>\n";6????>上例将输出“2005年01月01日12时59分59秒”。第4行使用split函数把时间分解,分解的标识符
包括“-”、空格和“:”,在第5行将其输出。除split之外,功能相似的函数还包括preg_split(),explode(),i
mplode(),chunk_split()和wordwrap()等。3.1.5??格式化字符串格式化字符串用于按一定的格式输出
含有许多变量的文本,是最常用的一种操作。PHP的fprintf()函数完成这个功能,习惯使用C语言的读者肯定对其感到熟悉。函数原型
为:stringsprintf(stringformat,mixed[args]...)参数format是转换后的格式,
各个变量都以“%”后的字符规定其格式,后面的多个参数以此对应于format中的“%”处。下面示例格式化浮点数的小数部分。12$money2=54.35;6???$money=$money1+$money2;7???//此时变数$mo
ney值为"123.1";8???$formatted=sprintf("%s有¥%01.2f。",$name,$m
oney);9???echo$formatted;???//张三有¥123.10。10???>第6行通过算术运算,得到$m
oney的值为123.1;而在第8行通过sprintf中的%01.2定义其格式为显示小数点后两位。除sprintf()之外,常用于
格式化数据的函数还有printf()、sprintf()、sscanf()、fscanf()、vsprintf()和number_
format()等。3.1.6??获取和替换子串获取子串是指从一个串中获取其中连续的一部分。例如,从串“2005-01-0112
:59:59”中取得时间串。PHP提供了两个函数来获取或替换串的某一部分:stringsubstr(stringstr,i
ntstart[,intlength]):获取子串,第1个参数str是待操作的串,第2个参数start表明子串在总串中的起
始位置,第3个可选参数指定所获取的子串长度,如果为正数则表明子串从start向右取,否则向左取;缺省时默认值为从start取到串尾
。stringsubstr_replace(stringstr,stringreplacement,intstart
[,intlength]):在获取的基础上进行替换,即将获取出的子串替换为其第2个参数replacement。下面的示例中,
首先利用substr()获取串“2005-01-0112:59:59”的时间信息,然后使用substr_replace()函数将
年份信息改为“2006”:120112:59:59";4???????$time=substr($date,11,8);?//子串"12:59:59"的起
始位置为11,长度为85???????echo"time:$time
";6???????$new_date=subs
tr_replace($date,"2006",0,4);7???????echo"newdate:$new_date";8
????>3.1.7??定位字符定位字符是指寻找某个字符在串中最先出现的位置,函数strpos()可以完成此功能。intst
rpos(stringstr,charneedle):第1个参数str为待处理的串,第2个参数needle为待寻找的字符。下
面这个示例,对一个电子邮件地址进行处理,首先使用strpos()寻找字符“@”,然后结合获取子串函数strstr()获取用户名。1
2?????$i=strpos($email,''@'');5???????$name=substr($email,0,$i);6?
??????echo$name;7????>示例第4行使用strpos()获取了字符’@’的位置,然后在第5行使用subst
r()得到用户名子串信息。3.1.8??求串长度求串长度也是常用的操作,所使用的函数为strlen():intstrlen(
stringstr)。这个函数很简单,返回字符串str的长度。仍以上一小节的例子为例,从电子邮件串中替换用户的名字,即改为lis
i@php.net。12hp.net";4???????$i=strpos($email,''@'');5???????$name=substr($ema
il,0,$i);6???????$email=substr_replace($email,"www.mntuku.cn",0,
strlen($name));7???????echo$email;8????>3.1.9?获取ASCII编码把字符转化为
ASCII编码在实际应用中有时是很有用的,例如,字符串在数据库中以二进制形式存放,而需要数据获取函数返回ASCII码串时,就需要把
其转化为字符串显示。PHP提供的转换ASCII码和字符的函数有以下两种。stringchr(intascii):把ASCII
码转化为字符串。intord(stringstring):把字符串转化为ASCII码。二者的使用参考下例。12ascii=ord(''A'');?????????//655???????echo$letter;6???????echo
???$ascii;7????>3.1.10?比较字符串字符串的比较规则是按照字典排序方法,排在前面的小于后面的。如同在一本
英语词典中,后面的词条大于前面的词条。PHP实现字符串比较的函数如下。intstrncmp(stringstr1,stri
ngstr2[,intlen]):函数的前两个参数为待比较的两个字符串,第3个可选参数可指定想比较二者从头开始的多少个字符。
如果str1>str2,函数返回正数;str1=str2时返回0;str1php-->2$i=strcmp($str1,$str2);6???????echo$i;???????//17????>除strcm
p()之外,具有字符串比较或排序功能的函数还strcasecmp(),strncmp(),strncasecmp(),strnat
casecmp(),strstr(),natsort()和natcasesort()。3.1.11?大小写转换比较两个字符串是否
在不区分大小写时相等,仅仅使用上一小节的strcmp()函数就不行了,这时可将两个字符串同时转换为大写或小写,然后再进行比较即可。
例如,在判断网站登录的用户名和密码(不区分大小写时)时,常需要这样。PHP实现字符串大小写转换的函数如下。stringstrt
olower(stringstr):将str转换为小写形式。stringstrtoupper(stringstring):
将str转换为大写形式。stringucfirst(stringstr):将str的第一个字符转换为大写形式。string
ucwords(stringstr):将str中每一个单词的首字母转换为大写形式。参考下例。12"China";5???????$str1=ucwords($str1);6???????echo$str1;??????
??//ShangdongProvince7???????$str1=strtoupper($str1);8???????e
cho$str1;????????//SHANGDONGPROVINCE9???????$str2=strtolower(
$str2);10??????echo$str2;????????//china11????>@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PHP字符串函
数分类?1查找字符位置函数:strpos($str,search,[int]):查找search在$str中的第一次位置从int开
始;stripos($str,search,[int]):函数返回字符串在另一个字符串中第一次出现的位置。该函数对大小写不敏感st
rrpos($str,search,[int]):查找search在$str中的最后一次出现的位置从int?2、提取子字符函数(双
字节)submit($str,intstart[,intlength]):从$str中strat位置开始提取[length长度
的字符串]。strstr($str1,$str2):从$str1(第一个的位置)搜索$str2并从它开始截取到结束字符串;若没有则
返回FALSE。stristr()功能同strstr,只是不区分大小写。strrchr()从最后一次搜索到的字符处返回;用处:
取路径中文件名3、替换字符串str_replace(search,replace,$str):从$str中查找search用rep
lace来替换str_irreplace(search,replace,$str):strtr($str,search,repla
ce):这个函数中replace不能为"";substr_replace($Str,$rep,$start[,length])$s
tr原始字符串,$rep替换后的新字符串,$start起始位置,$length替换的长度,该项可选4、字符长度intstrlen
($str)5、比较字符函数intstrcmp($str1,$str2):$str1>=<$str2分别为正1,0,-1(
字符串比较)strcasecmp()同上(不分大小写)strnatcmp("4","14")按自然排序比较字符串strnatc
asecmp()同上,(区分大小写)6、分割成数组函数str_split($str,len):把$str按len长度进行分割返回
数组split(search,$str[,int]):把$str按search字符进行分割返回数组int是分割几次,后面的将不分割
expload(search,$str[,int])7、去除空格:ltrim、rtrim、trim8、加空格函数chunk_spl
it($str,2);向$str字符里面按2个字符就加入一个空格;9、chr、ord--返回指定的字符或ascii10、HTML代
码有关函数nl2br():使\n转换为<br>。strip_tags($str[,''

'']):去除HTML和PHP标记在
$str中所有HTML和PHP代码将被去除,可选参数为html和PHP代码作用是将保留可选参数所写的代码。如:echostrip
_tags($text,''

'');htmlspecialchars($str[,参数]):页面正常输出HTML代码参
数是转换方式11、字符大小写转换函数strtolower($str)字符串转换为小写strtoupper($str)字符串转换
为大写ucfirst($str)将函数的第一个字符转换为大写ucwords($str)将每个单词的首字母转换为大写12、数据库
相关函数addslashes($str):使str内单引号('')、双引号(")、反斜线(\)与NUL字符串转换为\'',\",\\
。magic_quotes_gpc=On自动对getpostcookie的内容进行转义get_magic_quotes
_gpc()检测是否打开magic_quotes_gpcstripslashes()去除字符串中的反斜杠13、连接函数implo
de(str,$arr)将字符串数组按指定字符连接成一个字符串;implode()函数有个别名函数joinaddcslashes
——为字符串里面的部分字符添加反斜线转义字符addslashes——用指定的方式对字符串里面的字符进行转义bin2hex
——将二进制数据转换成十六进制表示chr——返回一个字符的ASCII码chunk_split——按一定的字符长度将字符串
分割成小块convert_cyr_string——将斯拉夫语字符转换为别的字符convert_uudecode——解密一个
字符串convert_uuencode——加密一个字符串count_chars——返回一个字符串里面的字符使用信息crc3
2——计算一个字符串的crc32多项式crypt——单向散列加密函数explode——将一个字符串用分割符转变为一数组
形式fprintf——按照要求对数据进行返回,并直接写入文档流get_html_translation_table——返回
可以转换的HTML实体html_entity_decode——htmlentities()函数的反函数,将HTML实体转换为
字符htmlentities——将字符串中一些字符转换为HTML实体htmlspecialchars_decode——ht
mlspecialchars()函数的反函数,将HTML实体转换为字符htmlspecialchars——将字符串中一些字符转
换为HTML实体implode——将数组用特定的分割符转变为字符串join——将数组转变为字符串,implode()函数的
别名levenshtein——计算两个词的差别大小localeconv——获取数字相关的格式定义ltrim——去除字符
串左侧的空白或者指定的字符md5_file——将一个文件进行MD5算法加密md5——将一个字符串进行MD5算法加密meta
phone——判断一个字符串的发音规则money_format——按照参数对数字进行格式化的输出nl_langinfo—
—查询语言和本地信息nl2br——将字符串中的换行符“\n”替换成“
”number_format——按照参数
对数字进行格式化的输出ord——将一个ASCII码转换为一个字符parse_str——把一定格式的字符串转变为变量和值pr
int——用以输出一个单独的值printf——按照要求对数据进行显示quoted_printable_decode——
将一个字符串加密为一个8位的二进制字符串quotemeta——对若干个特定字符进行转义rtrim——去除字符串右侧的空白或
者指定的字符setlocale——设置关于数字,日期等等的本地格式sha1_file——将一个文件进行SHA1算法加密sh
a1——将一个字符串进行SHA1算法加密similar_text——比较两个字符串,返回系统认为的相似字符个数sounde
x——判断一个字符串的发音规则sprintf——按照要求对数据进行返回,但是不输出sscanf——可以对字符串进行格式
化str_ireplace——像str_replace()函数一样匹配和替换字符串,但是不区分大小写str_pad——对字
符串进行两侧的补白str_repeat——对字符串进行重复组合str_replace——匹配和替换字符串str_rot13
——将字符串进行ROT13加密处理str_shuffle——对一个字符串里面的字符进行随机排序str_split——将
一个字符串按照字符间距分割为一个数组str_word_count——获取字符串里面的英文单词信息strcasecmp——对
字符串进行大小比较,不区分大小写strchr——通过比较返回一个字符串的部分strstr()函数的别名strcmp——对字
符串进行大小比较strcoll–根据本地设置对字符串进行大小比较strcspn——返回字符连续非匹配长度的值strip_t
ags——去除一个字符串里面的HTML和PHP代码stripcslashes——反转义addcslashes()函数转义处
理过的字符串stripos——查找并返回首个匹配项的位置,匹配不区分大小写stripslashes——反转义addslas
hes()函数转义处理过的字符串stristr——通过比较返回一个字符串的部分,比较时不区分大小写strlen——获取一个字符串的编码长度strnatcasecmp——使用自然排序法对字符串进行大小比较,不区分大小写strnatcmp——使用自然排序法对字符串进行大小比较strncasecmp——对字符串的前N个字符进行大小比较,不区分大小写strncmp——对字符串的前N个字符进行大小比较strpbrk——通过比较返回一个字符串的部分strpos——查找并返回首个匹配项的位置strrchr——通过从后往前比较返回一个字符串的部分strrev——将字符串里面的所有字母反向排列strripos——从后往前查找并返回首个匹配项的位置,匹配不区分大小写strrpos——从后往前查找并返回首个匹配项的位置strspn——匹配并返回字符连续出现长度的值strstr——通过比较返回一个字符串的部分strtok——用指定的若干个字符来分割字符串strtolower——将字符串转变为小写strtoupper——将字符串转变为大写strtr——对字符串比较替换substr_compare——对字符串进行截取后的比较substr_count——计算字符串中某字符段的出现次数substr_replace——对字符串中的部分字符进行替换substr——对字符串进行截取trim——去除字符串两边的空白或者指定的字符ucfirst——将所给字符串的第一个字母转换为大写ucwords——将所给字符串的每一个英文单词的第一个字母变成大写vfprintf——按照要求对数据进行返回,并直接写入文档流vprintf——按照要求对数据进行显示vsprintf——按照要求对数据进行返回,但是不输出wordwrap——按照一定的字符长度分割字符串

献花(0)
+1
(本文系雨亭之东首藏)