配色: 字号:
php字符串处理函数 字符串查找、替换、截取
2016-11-02 | 阅:  转:  |  分享 
  
(1)strcmp($str1,$str2)?//比较两个字符串是否相等,当结果为0时表示相等,为1时表示第一个字符串大于第二个字符串,
为-1是第一个字符串小于第二个字符串(这是大于和小于只是位置上的比较,在ascii码表中后面的字符大于前面的字符)1/2
strcmp($str1,$str2)比较两个字符串是否相等3@paramstring$str1第一个字符
串4@paramstring$str2第二个字符串5/6$str1=''hell'';7$str2=''e
llo'';8var_dump(strcmp($str1,$str2));//输出1,因为两个字符串的首字母不同,比较首字母
,h的位置在e后面,所以h比e大(2)strncmp($str1,$str2,$length);//比较两个字符串截取指定
长度的子串1/2strncmp($str,$str2,$len)比较两个字符串从开头到指定长度的子串3
@paramstring$str1第一个字符串4@paramstring$str2第二个字符串5@pa
ramint$len要截取的开头6/7$str3=''mypleasure!'';8$str4=''myboo
k'';9var_dump(strncmp($str3,$str4,2));//输出0,因为两个字符串截取两个长度都是my相
关函数strcasecmp()比较两个字符串时不区分大小写,strnatcmp(),strnatcasecmp(),strncas
ecmp()和上述两个函数相似,而且不是很常用,在此不再赘述2、字符串查找(1)strstr($str,$need,bool$
return_before=false)查找字符串中从$need开始到结尾的字符串<=>和strchr是同义函数1/
2strstr($str,$need,$return_before=false)===strchr3
@paramstring$str要操作的字符串4@paramstring$need要查找的字符串5
@bool$return_before是否返回$need在$str中首次出现之前的字符串6@descriptio
n:返回$need在$str中首次出现的开始到字符串结尾的那段字符串7相关函数:stristr()不区分大小写,8
/9$email=''yimengshixin@yeah.net'';10$email_suffix=strstr($e
mail,''@'');//输出@yeah.net11$domain=trim($email_suffix,''@'');12v
ar_dump($domain);//输出yeah.net13$username=strstr($email,''@'',t
rue);14var_dump($username);//输出yimengshixin(2)strrchr($str,$ne
ed)?在字符串$str中查找从最后一次出现字符$need开始到字符串结尾的子串/strrchr($str,$nee
d)@paramstring$str要操作的字符串@paramstring$need要查找的字符(如果是一
个字符串,就使用字符串的第一个字符)@description:返回$need在$str最后一次出现的位置开始到字符串结尾的那
段字符串/$url=''http://www.test.com/news/detail/2012/11/26/9778.
html'';$baseName=strrchr($url,''/'');//输出:/9778.htmlechotrim(
$baseName,''/'');//输出:9778.html(3)strpos($str,$need)在字符串$str中查找
$need首次出现的位置,返回这个位置值=>不区分大小写时用stripos()(4)strrpos($str,$need)
在字符串$str中查找$need最后一次出现的位置,返回这个位置=>不区分大小写时用strripos()1/2
strpos($str,$need[,int$offset])3@paramstring$str要操作的字符
串4@paramstring$need要被搜索的字符5@paramint$offset搜索的起始位
置(即字符串哪个字符开始算起)6@description:搜索$need在$str中首次出现的位置7相关函数:
stripos()不区分大小写,strrpos()最后一次出现的位置8/9$path=''var/cache/tpl/
20121126.php'';10$root_location=strpos($path,''/'');11var_dump(
$root_location);//输出312var_dump(substr($path,0,$root_location)
);//输出var13$filename_location=strrpos($path,''/'');14var_dump(
$filename_location);//输出1315var_dump(substr($path,0,$filename_
location));//输出var/cache/tpl16var_dump(substr($path,$filename_
location,strlen($path)));//输出/20121126.php(5)strpbrk($str,$ch
arlist)查找字符集$charlist的任意一个字符在$str首次出现的位置开始到结尾的子串1/2strpbr
k($str,$charlist)3@paramstring$str要操作字符串4@paramstrin
g$charlist要查找的字符集5@description:在$str中查找$charlist中任意一个字符,返回指
定字符第一次出现的位置开始的剩余部分6/7$string=''Wehavenothingtodo!'';8$nee
d=''ahvt'';9var_dump(strpbrk($string,$need));//输出havenothing
todo,因为在字符串$string中,h出现的位置在a前3、字符串的截取与转化(1)substr($str,$start,
$length)?截取字符串从$start开始截取$length个字符串形成的子串1/2substr($str,
$start,$length)3@paramstring$str要截取的字符串4@paramint$
start起始位置5@paramint$length截取的长度6@description:截取字符串$
str中从start位置开始截取$length个长度7/8$sStr=''http://bbs.test.com'';9v
ar_dump(substr($sStr,0,4));//输出http扩展:多字节字符串的截取(如汉字)mb_substr
()用法与substr()类似mb_substr($str,$start,$length,$charset)1/2
mb_substr($str,$start,$length,$charset)截取多字节的字符串和substr()用
法一样3@paramstring$charset编码类型4/5$var=''中国人民abc'';6var_d
ump(mb_substr($var,0,5,''utf-8''));?(2)explode($sep,$str)将字符串通过分
隔符转化为数组1/2explode($sep,$str)通过一个分隔符将一个字符串转化为一个数组3@pa
ramstring$sep分隔符4@paramstring$str要分隔的字符5/6$dir=''va
r/www/cache/tpl'';7//输出:array0=>string''var''(length=3)1=>st
ring''www''(length=3)2=>string''cache''(length=5)3=>string''
tpl''(length=3)8var_dump(explode(''/'',$dir));(3)impolde($sep,
$str)将数组通过分隔符转化为字符串<=>join1/2implode($sep,$array)将数
组通过分隔符连接成一个字符串3@paramstring$sep分隔符4@paramstring$st
r要分隔的字符56/7$dirArray=array(''http:/'',''bbs.test.com'',
''index.php'',''news'',''detail'',''499'',''page'',''2.html'');8//输出:http:
//bbs.test.com/index.php/news/detail/499/page/2.html9var_dump(i
mplode(''/'',$dirArray));10var_dump(join(''/'',array(''www'',''var'')))
;//输出www/var(4)str_split($str,$length)将字符串根据指定的长度分隔成一个数组(处理汉字时
请注意编码,编码不同,所占字符长度也不同)1/2str_split($str,$length)根据长度将字符串分
割成数组3@paramstring$str要分割的字符串4@paramint$length要分割的长度
5/6$split_str=''刘大,牛二,张三,李四,王五,朱六,廖七,周八,肖九'';7var_dump(str_sp
lit($split_str,7));//输出:array(0=>''刘大'',1=>''牛二''……)84、字符串替换、填充等
(1)str_replace($search,$replace,$str);将字符串中$search部分用$replace来
替换1/2str_replace($search,$replace,$str)3@paramstrin
g$search要被替换的字符串4@paramstring$replace替换后的字符串5@param
string$str要操作的字符串6/7$bad=''badman'';8var_dump(str_replace
(''bad'',''good'',$bad));//输出goodman(2)substr_replace($str,$repl
ace,$start,$length)在字符串$str副本中从$start位置开始截取$length个字符形成的字符串,并将
这段字符串替换成指定字符串返回1/2substr_replace($str,$replace,$start,
$length)截取$str副本中从$start开始截取$length个字符并替换为$replace3@param
string$str要操作的字符串4@paramstring$replace替换后的字符串5@par
amint$start开始位置6@paramint$length长度7/8$old=''hell
ojavascript!'';9var_dump(substr_replace($old,''php'',6,strlen(
$old)));//输出hellophp!10var_dump($old);//输出hellojavascript!没有改变
11(3)str_repeat($str,$times);将字符串$str重复$times次形成新的字符串1/2
str_repeat($str,$times)3@paramstring$str要重复的字符串4@par
amint$times重复的次数5/6var_dump(str_repeat(''##'',6));//输出:######
######(4)str_pad($str,$pad_length,$pad_str,$pad_type)字符串填充1
/2str_pad($str,$pad_length,$pad_str,$pad_type=STR_P
AD_RIGHT)3@paramstring$str被操作的字符串4@paramint$pad_le
ngth填充后的长度5@paramstring$pad_str用于填充的内容6@paramconst
$pad_type填充方向,分别有这向个常量:STR_PAD_LEFT(从左边填充),STR_PAD_RIGHT(从右边填充
),STR_PAD_BOTH(两边填充)7/8var_dump(str_pad(''abc'',10,''''));//输出
abc9var_dump(str_pad(''abc'',7,'''',STR_PAD_LEFT));//输出
abc10var_dump(str_pad(''abc'',6,'''',STR_PAD_BOTH));//输出ab
c5、与ASCII相关的字符串操作(1)ord(string$char)返回字符串对应的ASCII码值(2)chr(in
t$ascii)返回ascii值对应的字符1/2intord(string$char)3/4var_du
mp(ord(''A''));//输出6556/7stringchr(int$ascii)8/9var_du
mp(chr(72));//输出H6、与html转义有关的(1)strip_tags($str,$remain_tags)?
删除html或xml标签(其实只要是<>都会被过滤掉)(2)nl2br($str)在新行前加入
换行(3)wordw
rap($str,$length)自动换行(强制换行)?1/2strip_tags($str,$remai
n_tags)3@paramwww.mntuku.cn4@paramstring$remain_tags
要留的tag5/6$html=''

标题更多

/www.test.com">链接'';7var_dump(strip_tags($html));
//输出:标题更多链接8var_dump(strip_tags($html,''

''));//输出:

标题更

链接910/11nl2br($str)新行前添加
12/13$nl=''14ve
rygood!'';15var_dump(nl2br($nl));//输出:''
verygood!1617/
18wordwrap($str,$length)强制换行(自动换行)19/20$line=''0123456
789abcdefghijklmnopqrstuvwxyz'';21$newText=wordwrap($line,10,
''
'');22var_dump($newText);(4)htmlspecialchars($str,$style)
把几个预定义的字符转义成实体需要转义的字符:双引号",单引号'',大于号>,小于号<,还有&$style有三个常量可供选择:E
NT_COMPAT(只转义双引号,默认),ENT_QUOTES(双引号和单引号都转义),ENT_NOQUOTES(双引号和单引号都
不转义)1/2htmlspecialchars($str,$style,$charset)3@pa
ramstring$str要操作的字符串(要实体化)4@paramconst$style操作方式:5/
6$var1=''

youarea"bad"man!

&me?'';//输出:<h3>you
area"bad"man!<h3>&me?7$var2="

It''s
mypleasure!

&me?";//输出:<h3>It''smypleasure!</h3>&me?8var_dump(htmlspecialchars($var1));9var_dump(htmlspecialchars($var2));10var_dump(htmlspecialchars($var2,ENT_QUOTES));//输出:<h3>It'smypleasure!</h3>&me?(5)htmlentities($str,$flag=ENT_COMPAT,$charset)将更多的字符转义成html实体(6)addslashes($str)和stripslashes($str)为单引号和双引号添加转义\7、对字符串进行计算(有的也理解为加密)(1)cypt($str)计算单字符串散列(2)md5($str)进行md5计算8、其他未分类(1)strrev($str)反转字符串如:$a=''abc'';var_dump(strrev($a));?//输出:cba

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