php 字符串使用总结

来源:互联网 发布:js中大于等于怎么写 编辑:程序博客网 时间:2024/06/05 18:49

1、确定字符串长度

在php中使用strlen函数和mb_strlen函数,后者需要开启mbstring扩展

<?phpheader('content-type:text/html;charset=utf-8');$str = 'abcdef';echo strlen($str); // 6$str = ' ab cd ';echo mb_strlen($str); // 7//strlen 是计算字符串"字节"长度//mb_strlen,是根据编码,计算字符串的"字符"个数.$str='中华人民共和国';//在 UTF-8编码下,一个汉字占3个字节 在gbk中一个汉字占2个字节echo "字节长度是".strlen($str);//字节长度是21echo "字符长度是".mb_strlen($str,'utf-8');//字符长度是7

2、字符串剔除和填充

<?php//剔除$str = '  i am a student   ';//剔除字符串两端空格var_dump(trim($str));//'i am a student'//剔除字符串尾部空格var_dump(rtrim($str));//'  i am a student'//剔除字符串首部空格var_dump(ltrim($str));//'i am a student   '//可以通过指定参数,实现更高级功能var_dump(trim(',1,2,3,4,',','));//1,2,3,4var_dump(rtrim(',1,2,3,4,',','));//,1,2,3,4var_dump(ltrim(',1,2,3,4,',','));//1,2,3,4,//填充//每隔3位填充‘,’var_dump(chunk_split('12345678',3,','));//123,456,78,//尾部填充,如果字符串小于填充位置,则以空格补齐,如果大于填充位置,则尾部追加var_dump(str_pad('apple', 6)."is good.");//apple is good.var_dump(str_pad('apple123', 6)."is good.");//apple123is good.var_dump(str_pad('app', 6)."is good.");//app   is good.

3、字符串转换

<?php$str = 'i Am a student';//小写var_dump(strtolower($str));//i am a student//大写var_dump(strtoupper($str));//I AM A STUDENT//首字母大写var_dump(ucfirst($str));//I Am a student//首字母小写var_dump(lcfirst($str));//i Am a student////每个单词首字母大写var_dump(ucwords($str));//I Am A Student


4、字符串比较
<?php//字符串通过==,===,!=,!== 比较var_dump(22 == '22');//truevar_dump(22 === '222');//falsevar_dump(22 != '22');//falsevar_dump(22 !== '222');//true//但是以上比较重,可能会出现很多意外var_dump(0 == '你好');//truevar_dump(1 == '1哈哈');//truevar_dump(1 == '哈哈');//false

因此,php 字符串库函数中提供了对字符串的比较函数,它们的返回值定义为:

1):如果前者大于后者,返回大于0的数2):如果前者小于后者,返回小于0的数3):如果前者等于后者,返回0
<?php$a = 'abbc';$b = 'aBw';//区分大小写比较var_dump(strcmp($a, $b));//1,表示前者大于后者//不区分大小写比较var_dump(strcasecmp($a, $b));//-21,表示前者小于于后者//区分大小写比较,从第三个参数给定比较长度var_dump(strncmp($a, $b, 3));//1,表示前者大于后者//不区分大小写比较,从第三个参数给定位比较长度var_dump(strncasecmp($a, $b, 3));//-21,表示前者小于于后者


5、字符串分割连接翻转

<?php$str = "Hi lvfk";//默认一个一个进行拆分$arr1 = str_split($str);print_r($arr1);//Array ( [0] => H [1] => i [2] => [3] => l [4] => v [5] => f [6] => k )//每隔3个字符拆分$arr2 = str_split($str, 3);print_r($arr2);// Array ( [0] => Hi [1] => lvf [2] => k )$str = 'abc,中国,香港,台湾';// explode,是根据指定的分割符,把字符串拆成数组.$arr = explode(',',$str);print_r($arr);//Array ( [0] => abc [1] => 中国 [2] => 香港 [3] => 台湾 )// implode,是根据指定的连接符,把数组再拼接成字符串,也可以使用join$arr = explode(',',$str);echo implode('~',$arr),'<br />';//abc~中国~香港~台湾// 你可以只传一个数组做参数,不指定连接符,// 这样,将把数组单元直接拼接起来echo implode($arr);//abc中国香港台湾

<?php$str = "Hello fri3nd, HI, HI,hi,you're looking good today!";//字符串翻转var_dump(strrev($str));//!yadot doog gnikool er'uoy,ih,IH ,IH ,dn3irf olleH


6、统计单词
<?php$str = "Hello fri3nd, you're looking good today!";print_r(str_word_count($str, 1));//Array ( [0] => Hello [1] => fri [2] => nd [3] => you're [4] => looking [5] => good [6] => today )

7、查找

<?php$str = "Hello fri3nd, HI, HI,you're looking good today!";//strstr & stristr 查找,并返回查找成功位置后的所有字符串//strstr区分大小写var_dump(strstr($str, 'y'));//you're looking good today!var_dump(strstr($str, 'A'));//false,此处查找失败//stristr忽略大小写查找var_dump(stristr($str, 'A'));//ay!//strpos & stripos 查找位置,并返回查找成功的位置//strpos区分大小写var_dump(strpos($str, 'you'));//23var_dump(strpos($str, 'hi'));//false,此处查找失败//stripos不区分大小写var_dump(stripos($str, 'HI'));//14//strrpos 最后一次出现位置var_dump(strrpos($str, 'HI'));//18//strripos 最后一次出现位置,不区分大小写var_dump(strripos($str, 'HI'));//18

8、字符串替换
<?php$str = "Hello fri3nd, HI, HI,you're looking good today!";//str_replace,替换,大小写敏感var_dump(str_replace('hi', '#', $str));//Hello fri3nd, HI, HI,you're looking good today!var_dump(str_replace('HI', '#', $str));//Hello fri3nd, #, #,you're looking good today!//sub_replace 指定位置开始替换//从字符串$str,第二个位置开始替换,并替换全部var_dump(substr_replace($str, '#', 2));//He#//从字符串$str,第二个位置开始替换,并且只替换2个字符var_dump(substr_replace($str, '#', 2,2));//He#o fri3nd, HI, HI,you're looking good today!


9、字符串截取,substr,

substr_count,substr_compare,substr_replace
<?php$str = "Hello fri3nd, HI, HI,hi,you're looking good today!";//截取var_dump(substr($str,0,5));//Hellovar_dump(substr($str,5));// fri3nd, HI, HI,hi,you're looking good today!//统计出现次数,大小写敏感var_dump(substr_count($str, 'HI'));//2//针对中文截取,可以使用mb_substrvar_dump(mb_substr('你好,中国', 0,2));//substr_compare() 函数从指定的开始位置比较两个字符串。echo substr_compare("abcde", "bc", 1, 2); // 0echo substr_compare("abcde", "de", -2, 2); // 0echo substr_compare("abcde", "bcg", 1, 2); // 0echo substr_compare("abcde", "BC", 1, 2, true); // 0echo substr_compare("abcde", "bc", 1, 3); // 1echo substr_compare("abcde", "cd", 1, 2); // -1echo substr_compare("abcde", "abc", 5, 1); // warning//substr_replace() 函数把字符串的一部分替换为另一个字符串。$var = 'ABCDEFGH:/MNRPQR/';echo "Original: $var<hr />\n";/* These two examples replace all of $var with 'bob'. */echo substr_replace($var, 'bob', 0) . "<br />\n";echo substr_replace($var, 'bob', 0, strlen($var)) . "<br />\n";/* Insert 'bob' right at the beginning of $var. */echo substr_replace($var, 'bob', 0, 0) . "<br />\n";/* These next two replace 'MNRPQR' in $var with 'bob'. */echo substr_replace($var, 'bob', 10, -1) . "<br />\n";echo substr_replace($var, 'bob', -7, -1) . "<br />\n";/* Delete 'MNRPQR' from $var. */echo substr_replace($var, '', 10, -1) . "<br />\n";

10、其他常用字符串函数

<?php//ip字符串和长整型之间转换var_dump(ip2long('127.0.0.1'));//2130706433var_dump(long2ip(2130706433));//127.0.0.1//md5:将一个字符串进行MD5算法加密var_dump(md5('123'));//202cb962ac59075b964b07152d234b70//md5_file — 将一个文件进行MD5算法加密var_dump(md5(__FILE__));//a544327e3f2d2bd40ed09eb00ef90338//bin2hex - 将二进制数据转换成十六进制表示var_dump(bin2hex('a'));//61//nl2br — 将字符串中的换行符“\n”替换成“<br/>”var_dump(nl2br("hi \n nih"));//hi <br />nih

11、应用:多种方式获取路径后缀

<?php$url="http://localhost/user/order.php";function get_ext1($url){    return substr(strrchr($url,"."),1);}function get_ext2($url){    $p=pathinfo($url);//Array ( [dirname] => http://localhost/user [basename] => order.php [extension] => php [filename] => order )    return $p['extension'];}function get_ext3($url){    return substr($url,strrpos($url,'.')+1);}function get_ext4($url){    $arr=explode('.',$url);    return array_pop($arr);}function get_ext5($url){    return pathinfo($url,PATHINFO_EXTENSION);}echo get_ext1($url).'<br/>';echo get_ext2($url).'<br/>';echo get_ext3($url).'<br/>';echo get_ext4($url).'<br/>';echo get_ext5($url).'<br/>';