1.字符串的定义
2.字符串变量的声明
3.转义字符
4.双引号和单引号的区别
5.heredoc的写法
6.nowdoc的写法
7.字符串长度函数
8.查找字符位置函数
9.字符串替换函数,大小写转换,指定字符分隔,字符串的函数的比较(如strcmp())
html中的字符转实体(反之),字符串截取,数字字符串加分隔符
10.提取子字符串函数
11.分割,连接,反转函数
12.去除,增加空格函数
13.html代码/数据库安全处理有关函数
14.比较字符函数
15.字符大小转换函数
16.字符串截取函数
1.字符串的定义
字符串在讲变量时候已经讲了,怎么又要讲?
答:之前,只是字符串这种变量类型
但对于其定义,性质,函数等等,没有深入的说
第2:字符串,在php中,是非常重要的一个概念
可以这么说:你在开发网站中想对字符串做某种操作
基本上你想到的字符串的处理功能,系统都已有相关函数了.
因为php自诞生之初,就是为web开发而来的.
因为网站开发中,字符串处理,是php的一大亮点
php中,1是字符串,2是数组函数,都非常多,非常好用.
什么是字符串?
答:字符串,就是一串字符
羊肉串就是一串羊肉 返回目录
2. 字符串的声明方式
1 1.如何声明一个字符串变量 2 答: 3 双引号 4 单引号 5 定界符 6 7 8 */ 9 10 $str1 = "hello"; 11 echo $str1; 12 13 $str2 = "hello,"jack" ";//这个字符串是一个新闻标题,标题里很容易又出现双引号 14 15 /*
//转义字符
16 思考: 17 用双引号,来声明字符串的时候内部不能再出现双引号 18 因为,双引号被当成了字符串的边界来对待,因此,内部出现 19 双引号,就引起了解释上的歧义.这时,可以用转字符. 20 即,用 \" 转义来表示 21 22 还有没有其他的转义字符呢? 23 想: \" 被用来当成 " 理解了 24 那么要是确实想表示,反斜\,又怎么办呢? 25 答:\\,表示反斜线\ 26 27 \' 单引号 28 \\反斜线 29 \"双引号 30 \n换行 31 \r回车 32 \t水平方向的tab 33 \v竖直方向的 34 \f换页 35 \$美金dollar标记 36 37 38 39 */ 40 41 $str2 = "hello ,\"jack\" "; 42 echo $str2; 43 44 $str3 = "hello \\ "; 45 echo $str3; 46 47 $str4 = "hello\n\rworld"; 48 echo $str4; 49 50 $str5 = "hello $str3"; 51 echo $str5; //hello hello \,即把$str3当变量解析出来了. 52 echo '<br />'; 53 $str6 = "hello \$str3";//此处 \$被转成了普通字符串$,而不再理解为变量标志 返回目录 54 echo $str6; 55 //再看单引号码 56 57 58 $str1 = 'hello<br />'; 59 echo $str1; 60 61 $str2 = 'hello \'jack\' ';//某字符串是新闻标题,标题又出现 62 //=--------------------------------------------------- 63 //单引号 64 //echo $str2; 65 // 66 ////单引号里又出现了单引号,又该怎么办呢? 67 ////答:被用来做字符串的边界了. 68 ////因此只能转义了来表示了. 69 //// \被用来转义单引号用了,那么如果我确实想表示\怎么办呢? 70 // 71 //// \\ 来表示 \ 72 // 73 // 74 $str3 ='hello \\'; 75 echo $str3; 76 77 78 /* 79 双引号和单引号的区别? 80 81 1.单双引号字符串有何区别? 82 83 //1.单引号,系统不做复杂的转义 84 //2.只转义 \' , \\ ,其他的一律原样输出. 85 //3.双引号,则转义的比较多, \n \r \t, \f \$ \\ \v 86 //4.对于变量解析的的区别: 87 //5.单引号,不对字符串$作变量名解析,而双引号要. 88 89 //---------------------------------------------------- 90 91 2. 单双引号哪个速度快些? 92 答:单引号定义的更快,因为不需要进行过多的转义和变量解析. 93 94 问:什么时间选用单/双引号呢? 95 96 答:大段文本,比如新闻标题,文本内容,自我介绍等这样大段话. 97 用'',解析快.. 98 99 但有时候,确实需要在一段字符串夹杂变量. 100 101 102 103 104 */ 105 $id = 5; 106 $sql = "select * from user id = 5"; 107 //如果此时用单引,则语句成为了 ..id = $id,sql就出错了. 108 //此时,用双引号合适 ,解析$id 语句解析 ..id = 5; 109 110 111 $age = 3; 112 $str1 = 'hello \n\r \t $age '; 113 $str2 = "hello \n\r \t $age"; 114 115 116 echo $str1,'<br />';117 echo $str2,'<br />'; 返回目录 118 119 //heredoc的用法 120 //当需要写一大段文本,里面又有单引号,又有双引号,导致转义的时候,都比较麻烦,还可以用heredoc,nowdoc 两种界定字符串的方式 121 $age =23; 122 $str = <<< title 123 //我来写一行 124 //再来写第2行," '\, 125 //sdfsa, asdf \t \n 126 //hahah 127 $age 128 title; 129 echo $str; 130 131 /*** 132 heredoc的写法 133 <<< 标志符 134 中间写大段文本 135 1.标志符的名称和变量名求一样. 136 2.heredoc 的结束符,一定是独占一行,而且前面没有任何其他字符 137 138 3. heredoc对文本的处理和双引号一样,即 \r \n \t变量等都能解析出来. 139 140 4.heredoc 写大段文本挺方便,但是对内部的字符解析和双引号一样. 如果我不想这样,有没有类似heredoc写大段文本,有没有 141 这样的用法呢? 142 143 答:有 144 145 到了5.3.0之后,又新增了nowdoc方式,能达到如上效果 146 147 148 ***/ 149 echo '<hr />'; 150 151 $age =23; 152 $str = <<< 'title' 153 // 154 //我来写一行 155 //再来写第2行," '\, 156 sdfsa, asdf \t \n 157 hahah 158 $age 159 title; 160 echo $str; 161 /****** 162 nowdoc写法和heredoc写法和heredo一样,唯独在标识符两边用 163 单引号包起来,这样,在段文本的解析,就和单引号一样的效果. 164 不转义 \t \n \r 变量等 165 //==================================================== 返回目录
7. 字符串长度函数
1 //==================================================== 2 3 //字符串长度函数---------strlen() 4 $str = 'hello'; 5 $str2 ='中国'; 6 echo 'hello有',strlen($str),'个字节'; 7 echo '<br />'; 8 echo '中国有',strlen($str2),'个字节'; 9 10 11 //为什么"中国"是6个字节呢? 12 //我们的.php文件,是utf-8编码 13 // 14 //中文在utf-8编码规则中,一个中文占3个字节. 15 //因此,'中国'占6个字节.而英文为Ascii码1个英文占1个字节。 16 // 17 //在ANSI中,即GBK 中一个中文占2个字节。 18 // 19 // 20 // 21 //要知道,编码都是有规律的, 22 //utf-8有utf-8的规律,你告诉mb_strlen,用utf8规则来判断字符串 23 // 24 //判断出是4个字符 25 // 26 //总结: 27 //strlen 是计算字符串“字节”长度 28 //而mb_strlen 是计算出字符串的”字符“个数 29 30 $str = '中华民国'; 31 echo '字节长度是',strlen($str),'<br />';//中文在utf-8编码规则中,一个中文占3个字节 32 echo '字符长度是',mb_strlen($str,'utf-8'),'<br />'; 返回目录
8. 查找字符串位置函数--------------strpos()
1 //查找字符串位置函数--------------strpos() 2 3 //查找字符串中子字符串的位置 4 $str = 'how are you! fine thank fine you ,may be you are right,256, I dont think so let me see I can not fine'; 5 // 6 //经理说:你能否找找,这段字符串里,有没有“fine” 7 8 //int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] ) 9 //其中mixed 是一种混合类型 10 11 //第三个参数的讨论offset 12 //第三个可选参数,offset的作用,就体现出来了 13 14 //offset的意思是---偏移量 就是把光标先偏移一段距离,再 15 16 17 // 18 echo strpos($str,'fine',18); //13,经过了13字节后,找到了fine 19 var_dump(strpos($str,256)); //没找到,false 20 echo '<br />'; 21 var_dump(strpos($str,97));//97找到了,返回值是4 22 /////** 23 //在计算机里,ascii字符集中 24 //65 ----> 90 A-Z 25 //97 ----> 122 a_z 26 // 27 //当你第2个参数,写的是整型时,则把理解为是acsii字符的编码 28 // 29 //所以 int 97 ===‘a’ 30 // 31 //不熟悉ascii的,百度‘ascii’码表 32 // 33 34 35 //1.写一个函数,判断指定的父串中有没有子串 36 37 38 function findsub($str,$find){ 39 40 $str=strpos($str,$find); 41 if($str){ 42 echo '父串中有子串'; 43 }else{ 44 echo '父串中没有子串'; 45 } 46 } 47 $str1 = 'how are you! fine thank fine you ,may be you are right,256, I dont think so let me see I can not fine'; 48 $str2 = 'how'; 49 findsub($str1,$str2); 50 51 52 //上面这个判断出问题了 53 //因为strpos 返回了0,而0用if判断时,当成false处理 54 // 55 //这里要用到===这个判定符。 56 57 function findsub1($str,$find){ 58 59 $str=strpos($str,$find); 60 if($str === false){ 61 echo '父串中没有子串'; 62 }else{ 63 echo '父串中有子串'; 64 } 65 } 66 $str1 = 'how are you! fine thank fine you ,may be you are right,256, I dont think so let me see I can not fine'; 67 $str2 = 'how'; 68 findsub1($str1,$str2); 69 70 //用for循环或者while 循环计算父串中,子串中出现的次数? 71 72 //函数名:subnum 73 //参数:string $str待查父串, 74 //string $sub 子串 75 // 76 //return int 即子串的个数 77 // 78 //思路: 79 //先从头查找子串,找到后,则偏移过去子串,继续查找,直到查不到 80 81 82 // 83 function subnum($str,$sub){ 84 $sublen = strlen($sub); 85 $strlen = strlen($str); 86 87 if($sublen > $strlen){ 88 return 0; 89 //如果子串比父串长,没必要找了 90 } 91 92 for($offset=0,$num=0;($offset=strpos($str,$sub,$offset))!==false;){ 93 $num+=1; 94 $offset+=$sublen; 95 } 96 return $num; 97 } 98 99 $x = 'how are you! fine thank fine you ,may be you fine are right,256, I dont think so let me see I can not fine'; 100 101 $y = 'fine'; 102 103 //echo '在父串中找到了',subnum($x,$y),'个子串fine'; 104 // 105 // 106 //echo '我也找到',substr_count($x,$y),'个fine'; 107 108 //这里为什么让大家重视字符串,php的字符串太强大了 109 //你要是不了解,可能会多花很多时间到来php中已经存在的函数。 110 111 // 112 //$x = 'how are you! fine thank fine you ,may be you fine are right,256, I dont think so let me see I can not fine'; 113 // 114 //$y = 'fine'; 115 // 116 //var_dump(stripos($x,$y)); //返回字符串在另一字符串中第一次出现的位置,该函数不区分大小写。 117 //var_dump(strrpos($x,$y,0)); //返回$y字符串在$x符串中最后一次出现的位置,该函数区分大小写,从位置0开始, 118 ////注意位置的下标是从0开始的。 119 //---------------------------------------------------- 返回目录
9.字符串替换函数,大小写转换,指定字符分隔
html中的字符转实体(反之),字符串截取,数字字符串加分隔,字符串的函数的比较(如strcmp())
1 //3.字符串替换函数--------------str_replace() 2 3 //mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] ) 4 //str_replace 字符串替换函数 5 //str:string 字符串 6 //replace: 替换 7 //准备,把hi换成hello 8 //$count表示替换的次数。 9 $str = 'hi,this is lily history'; 10 11 $newstr = str_replace('hi','hello',$str,$num); 12 echo $str,'<br />',$newstr; 13 echo '<br />'; 14 // 15 ////能不能帮我统计一下替换的次数. 16 //echo '总共替换了',$num,'次'; 17 18 //再次要求,把hi换成hello,把li换成ul 19 //可以用数组,指定多种替换 20 $search = array('hi','li'); 21 $replace = array('hello','ul'); 22 23 $newstr = str_replace($search,$replace,$str); 24 echo '新替换的后为:',$newstr,'<br />'; 25 //// 26 //hi单词--->hello单词 27 // 28 //但this单词中的一部都被替换了,不想被替换,该怎么办? 29 // 30 //能不能,是单词的一部就是替换? 31 // 32 //答:用正则表达式,现在还做不到. 33 // 34 //突发奇想: 35 //hi-->hello 36 //hello ---> hi 37 38 39 $str = 'hi lily, hello jim'; 40 41 $newstr = str_replace(array('hi','hello'),array('hello','hi'),$str); 42 echo $newstr;//我们想要的是 hello lily ,hi jim ,但是实际为:hi lily, hi jim 43 44 45 46 //分析: 47 //string strtr ( string $str , string $from , string $to ) 48 //该函数返回 str 的一个副本,并将在 from 中指定的字符转换为 to 中相应的字符。 49 // 50 //碰到这种情况,有没有更好的函数来代替呢? 51 //答:用strtr以单个字符对应来替换的.比如: 52 //strstr($str,'hi','ab') 则执行 h被i替换 53 //然后 i 被替换成b 54 // 55 //还可以换一种写法: 56 57 $str = '你好,。12345'; 58 strtr($str,array('1'=>'1',2=>'2'));----------------- strtr() 59 60 $str = '你好,。12345'; 61 echo strtr($str,array('1'=>'1',2=>'2')); 62 63 //全半角转换,用strt非常方便 64 //ecshop里面就用到。 65 //在 includes ---> lib_base.php---744行里面 66 // 67 // strtr---->别名strchr 68 //---------------------------------------------------- 69 70 //截取子字符串 ------substr()--------strstr()-------strrchr() 71 //-------explode()------implode()------chunk_split()-----htmlspecialchars 72 //-------htmlspecialchars_decode()------strtolower($str)----strtoupper($str) 73 //substr 74 75 //string substr ( string $string , int $start [, int $length ] ) 76 //$string:待截取的长字符串 77 //$start:截取开始的位置 78 //$length:正数时代表截取的长度。负数时,代表截取结束的位置 79 // 80 $str ='abcdeff'; 81 echo substr($str,3),'<br />'; 82 83 //1.当第3个参数不指定时,截取到字符串的‘结尾’ 84 // 85 //经理说:把字符串末尾的3个字符串截取出来。 86 // 87 echo substr($str,-3);//办法2:第2个参数为负数,表示从右开始截取 88 echo substr($str,(strlen($str)-3)); 办法1:总长度减去3,也能截取到结尾的三个字符. 89 // 90 //2. 除了前3个和结尾3个外,截取中间的部分字符串. 91 // 92 //分析:start应该是3 93 // 94 //length,如果代表长度,多长呢?不一定,因为字符串长度不好算 95 // 96 //这时,可以把length写成负数 97 98 //---------------------------------------------------- 99 //如果用substr来截中文呢? 100 101 //substr是按字节来操作的,不考虑什么编码 102 $str = '中国民国'; //我的文件utf-8, 103 echo substr($str,0,3);----------------------------substr() 104 105 //---------------------------------------------------- 106 //如果用substr来截中英混合呢? 107 108 $str = 'lily你的代码report给我,中午我们有个meeting ,一会儿带你吃KFG'; 109 echo substr($str,0,6),'ab';//按字节截,'lily你'是7个字节才完成'你'的3个字节,被截了2个,出了问题 110 //---------------------------------------------------- 111 //strstr($str,$needle); 112 113 //作用:是在$str中找到指定的$needle,而且是$needle第一次出现的位置,返回该位置直到字符串结尾的这一部分 114 115 //能否把第一次找到的$needle的位置之前的字符串截取出来呢? 116 //答: 能,从php5.3.0版本开始,strstr函数多了第3个可选参数 117 118 $str = 'asdf.def.jpg.exe'; 119 echo strstr($str,'.'),'<br />'; // .def.jpg.exe 120 echo strstr($str,'.',true); ---------------------strstr() 121 122 //能否先把$needle最后一次出现的位置找出来 123 //从该位置,一直截到结尾 124 125 echo strrchr($str,'.'),'<br />'; 126 127 //面试时,让你计算一个文件的后缀? 128 $file = 'new.txt'; 129 echo strrchr($str,);----------------------strrchr() 130 131 //php中,字符串函数和数组最多 132 //字符串和数组,有2个函数,是他们的桥梁,非常频繁的使用. 133 // 134 //就是implode ,explode 135 // 136 //有的网站,写文章,让我们填写标签,"多个标签用逗号隔开" 137 // 138 //$str = 'abc,中国,美国,日本'; 139 // 140 ////explode 是根据指定的分割符,把字符串拆成数组 141 $arr = explode(',',$str); --------------------------explode() 142 print_r($arr); 143 144 而implode是根据指定的连接符,把组再拼接成字符串 145 $arr = implode('~',$arr); 146 var_dump($arr); 147 148 //你可以中只传一个数组,不指定连接符 149 //这样,将把数组单元组合在一起中间没有连接符. 150 // 151 $arr = implode($arr);-----------------implode() 152 var_dump($arr); 153 154 $str = '12345678'; 155 echo chunk_split($str,3,','); //每隔三个字符加一个逗号.------------chunk_split(); 156 157 //如果不加逗号,则默认为换行. 158 echo '<hr />'; 159 echo chunk_split($str,3); 160 ==================================================== 161 字符转义函数,非常重要. 162 163 $str = "abc ', hello"; 164 echo $str,'<br />'; 165 $str = addslashes($str); //单引号被转义成都市\'--------------addslashes() 166 echo $str; 167 168 //现在我们还没有学习mysql,你还意识不到一个单引 169 //号的破坏作用.但要知道,单双引号如果不小心,数据库 170 //是会被注入的 171 // 172 //应该把客户输入进来的数据,进行转义,防止单双引号带来的破坏 173 //能不能把戏\',转回 174 答:能 175 echo '<hr />'; 176 $str = stripslashes($str);------------------stripslashes(); 177 echo $str; 178 179 htmlspecialchars----------将字符中一些字符转换为HTML实体 180 htmlspecialchars_decode--------htmlspecialchars()函数的反函数,将HTML实体转换为字符 181 182 htmlentitles----------将字符串中所有可转换字符转换为HTML实体 183 184 $str = '<ab>'; 185 $str = htmlspecialchars($str); 186 $str= htmlspecialchars_decode($str); 187 echo $str; 188 189 int strcmp ( string $str1 , string $str2 )-----------------strcmp() 190 //如果 str1 小于 str2,返回负数;如果 str1 大于 str2,返回正数;二者相等则返回 0。 191 192 if(strcmp('a','b')>0){--------------------strcmp() 返回目录
193 echo 'a>b'; 194 }else if(strcmp('a','b')<0){ 195 echo 'a<b; 196 }else{ 197 echo '相等'; 198 } 199 200 //大小写转换 201 202 $str = 'heLLO,THIS iS lILY,BUT,I LOVE hANMEImei'; 203 204 echo strtolower($str),'<br />';//-----------------strtolower() 205 206 echo strtoupper($str),'<br />';//-----------------strtolower() 207 208 //把$str字符串中的第一单词即hello首字母大写. 209 210 echo ucfirst($str),'<br />';//-----------------strtolower() 211 //==================================================== 返回目录
有关字符串的字面试题:
//有关字符串的面试题 $str = 'abcdef'; echo substr($str,0,1); echo $str[0]; //字符串还有一个类数组特性,即可以用索引、下标把指定的字符取出来 // //如何实现字符串反转 $str = 'abcde'; function rev($str){ $len = -strlen($str); for($new = '',$start=-1;$start>=$len; $start--){ $new.=substr($str,$start,1); } return $new; } echo rev($str),'<br />'; //echo strrev($str);---------------字符串反转函数 //用5种以上方式获取文件的后缀 //例:a.jpeg.exe,获得exe,或者.exe //---------------------------------------------------- //方法1 $file = 'a.jpeg'; function getext($file){ return strrchr($file,'.'); } echo getext($file); //找最后一个 .出现的位置,再substr截取。 //strrpos是找子字符最后一次出现的位置 //---------------------------------------------------- $file = 'a.jpeg'; function getext2(){ return substr($file,strrpos($file,'.')); } echo strrpos($file,'.'); echo strrev($file); exe.gepj.a exe.gepj.a //把字符串反过来,然后再找第一个点出现的位置 //然后再反一次 $file = 'a.jpeg.doc.dsf'; ---------------------------------------------------- function getext3($file){ $file = strrev($file); //cod.gepj.a $find = strpos($file,'.');// 3 $file = substr($file,0,$find); $file = strrev($file); return $file; } echo getext3($file); // //用系统函数pathinfo $file = 'a.jpeg'; //$arr = pathinfo($file); //---------------------------------------------------- function getext4($file){ $arr = pathinfo($file); return $arr['extension']; retrun pathinfo($file,PATHINFO_EXTENSION); //直接返回jpeg } echo getext4($file); //Array //( // [dirname] => . ----------------代表在当前目录下 // [basename] => a.jpeg-----------基本名称 // [extension] => jpeg------------文件扩展名 // [filename] => a----------------文件名 //) //如果学习了数组,还可以有多种做法 //---------------------------------------------------- //将1234567890转换成1,234,567,890这种方式 $num = '1234567'; function t1($num){ $arr = str_split(strrev($num),3); return strrev(implode(',',$arr)); } print_r(t1($num)); //Array ( [0] => 123 [1] => 456 [2] => 7 ) //--------------------------------------------------- $num = '1234567'; function t2($num){ $num =strrev($num); return ltrim(strrev(chunk_split($num,3,',')),',');---------ltrim() 函数从字符串左侧删除空格或其他预定义字符。 } print_r(t2($num)); //---------------------------------------------------- $num = '1234567'; echo number_format($num);-------------number_format()系统自带的数字分割函数,以千为单位分割。 //==================================================== 返回目录
分割,连接,反转函数
1 //字符串和数组,有2个函数,是他们的桥梁,非常频繁的使用. 2 // 3 //就是implode ,explode 4 // 5 //有的网站,写文章,让我们填写标签,"多个标签用逗号隔开" 6 // 7 //$str = 'abc,中国,美国,日本'; 8 // 9 ////explode 是根据指定的分割符,把字符串拆成数组 10 $arr = explode(',',$str); --------------------------explode() 11 print_r($arr); 12 13 而implode是根据指定的连接符,把组再拼接成字符串 14 $arr = implode('~',$arr); 15 var_dump($arr); 16 17 //你可以中只传一个数组,不指定连接符 18 //这样,将把数组单元组合在一起中间没有连接符. 19 20 //如何实现字符串反转 21 22 $str = 'abcde'; 23 function rev($str){ 24 $len = -strlen($str); 25 for($new = '',$start=-1;$start>=$len; $start--){ 26 $new.=substr($str,$start,1); 27 28 } 29 return $new; 30 } 31 32 echo rev($str),'<br />'; 33 //echo strrev($str);---------------字符串反转函数 34 //------------------------------------------ 35 36 $arr = implode($arr);-----------------implode() 37 var_dump($arr); 38 39 $str = '12345678'; 40 echo chunk_split($str,3,','); //每隔三个字符加一个逗号.------------chunk_split(); 41 42 //如果不加逗号,则默认为换行. 43 echo '<hr />'; 44 echo chunk_split($str,3); 45 ==================================================== 返回目录
13.html代码/数据库安全处理有关函数
1 字符转义函数,非常重要. 2 3 $str = "abc ', hello"; 4 echo $str,'<br />'; 5 $str = addslashes($str); //单引号被转义成都市\'--------------addslashes() 6 echo $str; 7 8 //现在我们还没有学习mysql,你还意识不到一个单引 9 //号的破坏作用.但要知道,单双引号如果不小心,数据库 10 //是会被注入的 11 // 12 //应该把客户输入进来的数据,进行转义,防止单双引号带来的破坏 13 //能不能把戏\',转回 14 答:能 15 echo '<hr />'; 16 $str = stripslashes($str);------------------stripslashes(); 17 echo $str; 18 19 htmlspecialchars----------将字符中一些字符转换为HTML实体 20 htmlspecialchars_decode--------htmlspecialchars()函数的反函数,将HTML实体转换为字符 21 22 htmlentitles----------将字符串中所有可转换字符转换为HTML实体 23 24 $str = '<ab>'; 25 $str = htmlspecialchars($str); 26 $str= htmlspecialchars_decode($str); 27 echo $str; 28 29 int strcmp ( string $str1 , string $str2 )-----------------strcmp() 30 //如果 str1 小于 str2,返回负数;如果 str1 大于 str2,返回正数;二者相等则返回 0。 31 32 if(strcmp('a','b')>0){--------------------strcmp() 33 echo 'a>b'; 34 }else if(strcmp('a','b')<0){ 35 echo 'a<b; 36 }else{ 37 echo '相等'; 38 } 39 40 //大小写转换 41 42 $str = 'heLLO,THIS iS lILY,BUT,I LOVE hANMEImei'; 43 44 echo strtolower($str),'<br />';//-----------------strtolower() 45 46 echo strtoupper($str),'<br />';//-----------------strtolower() 47 48 //把$str字符串中的第一单词即hello首字母大写. 49 50 echo ucfirst($str),'<br />';//-----------------strtolower() 51 //==================================================== 返回目录
大小写转换函数
1 //大小写转换 2 3 $str = 'heLLO,THIS iS lILY,BUT,I LOVE hANMEImei'; 4 5 echo strtolower($str),'<br />';//-----------------strtolower() 6 7 echo strtoupper($str),'<br />';//-----------------strtolower() 8 9 //把$str字符串中的第一单词即hello首字母大写. 10 11 echo ucfirst($str),'<br />';//-----------------strtolower() 返回目录
16 字符串截取函数
1 /string substr ( string $string , int $start [, int $length ] ) 2 //$string:待截取的长字符串 3 //$start:截取开始的位置 4 //$length:正数时代表截取的长度。负数时,代表截取结束的位置 5 // 6 $str ='abcdeff'; 7 echo substr($str,3),'<br />'; 8 9 //1.当第3个参数不指定时,截取到字符串的‘结尾’ 10 // 11 //经理说:把字符串末尾的3个字符串截取出来。 12 // 13 echo substr($str,-3);//办法2:第2个参数为负数,表示从右开始截取 14 echo substr($str,(strlen($str)-3)); 办法1:总长度减去3,也能截取到结尾的三个字符. 15 // 16 //2. 除了前3个和结尾3个外,截取中间的部分字符串. 17 // 18 //分析:start应该是3 19 // 20 //length,如果代表长度,多长呢?不一定,因为字符串长度不好算 21 // 22 //这时,可以把length写成负数 23 24 //---------------------------------------------------- 25 //如果用substr来截中文呢? 26 27 //substr是按字节来操作的,不考虑什么编码 28 $str = '中国民国'; //我的文件utf-8, 29 echo substr($str,0,3);----------------------------substr() 30 31 //---------------------------------------------------- 32 //如果用substr来截中英混合呢? 33 34 $str = 'lily你的代码report给我,中午我们有个meeting ,一会儿带你吃KFG'; 35 echo substr($str,0,6),'ab';//按字节截,'lily你'是7个字节才完成'你'的3个字节,被截了2个,出了问题 36 //---------------------------------------------------- 37 //strstr($str,$needle); 38 39 //作用:是在$str中找到指定的$needle,而且是$needle第一次出现的位置,返回该位置直到字符串结尾的这一部分 40 41 //能否把第一次找到的$needle的位置之前的字符串截取出来呢? 42 //答: 能,从php5.3.0版本开始,strstr函数多了第3个可选参数 43 44 $str = 'asdf.def.jpg.exe'; 45 echo strstr($str,'.'),'<br />'; // .def.jpg.exe 46 echo strstr($str,'.',true); ---------------------strstr() 47 48 //能否先把$needle最后一次出现的位置找出来 49 //从该位置,一直截到结尾 50 51 echo strrchr($str,'.'),'<br />'; 52 53 //面试时,让你计算一个文件的后缀? 54 $file = 'new.txt'; 55 echo strrchr($str,);----------------------strrchr() 返回目录
空白处理函数
相关视频:
1. 燕十八-PHP公益培训-YY直播-028-字符串定义及单双引号区别
2. 燕十八-PHP公益培训-YY直播-029-字符串定界符的用法
3. 燕十八-PHP公益培训-YY直播-030-字符串系统函数讲解
4. 燕十八-PHP公益培训-YY直播-031-字符串系统函数(2)