zoukankan      html  css  js  c++  java
  • php中字符串的详细介绍

    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()

    strpos($str,search,[int]):查找search在$str 中的第一次位置从int开始;
    stripos($str,search,[int]):函数返回字符串在另一个字符串中第一次出现的位置。该函数对大小写不敏感
    strrpos($str,search,[int]):查找search在$str中的最后一次出现的位置从int
      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()

    str_replace(search,replace,$str):从$str中查找 search用replace来替换
    str_irreplace(search,replace,$str):
    strtr($str,search,replace):这个函数中replace不能为"";
    substr_replace($Str,$rep,$start[,length])$str原始字符串,$rep替换后的新
    字符串,$start起始位置,$length替换的长度,该项可选
      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&gt;b'; 194 }else if(strcmp('a','b')<0){ 195 echo 'a&lt;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()系统自带的数字分割函数,以千为单位分割。
    
    //====================================================                               返回目录  

    分割,连接,反转函数

    str_split($str,len):把$str按len长度进行分割返回数组
    split(search,$str[,int]): 把$str按search字符进行分割返回数组int是分割几次,后面的将不分割
    explode(search,$str[,int])
    implode —— 将数组用特定的分割符转变为字符串
     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代码/数据库安全处理有关函数

    addslashes ( string $str )
    stripslashes ( string $str )
    get_magic_quotes_gpc()
    htmlspecialchars ——将字符串中一些字符转换为HTML实体
    htmlspecialchars_decode —— htmlspecialchars()函数的反函数,将HTML实体转换为字符
    html_entity_decode —— htmlentities ()函数的反函数,将HTML实体转换为字符
    htmlentities ——将字符串中所有可转换字符转换为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&gt;b';
    34 }else if(strcmp('a','b')<0){
    35     echo 'a&lt;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   字符串截取函数

    substr($str,int start[,int length]):从$str中strat位置开始提取[length长度的字符串]。
    strstr($str1,$str2): 从$str1(第一个的位置)搜索$str2并从它开始截取到结束字符串;若没有则返回FALSE。
    stristr() 功能同strstr,只是不区分大小写。
    strrchr() 从最后一次搜索到的字符处返回;
     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()                          返回目录

    空白处理函数

    string trim ( string $str [, string $charlist ] )
    string ltrim ( string $str [, string $charlist ] )
    string rtrim ( string $str [, string $charlist ] )
    chunk_split($str,2);向$str字符里面按2个字符就加入一个空格;
    str_pad —— 对字符串进行两侧的补白                                                                     返回目录

     相关视频:

    1. 燕十八-PHP公益培训-YY直播-028-字符串定义及单双引号区别

    2. 燕十八-PHP公益培训-YY直播-029-字符串定界符的用法

     3. 燕十八-PHP公益培训-YY直播-030-字符串系统函数讲解

    4. 燕十八-PHP公益培训-YY直播-031-字符串系统函数(2)

    5.燕十八-PHP公益培训-YY直播-032-字符串函数详解(3)

    6.燕十八-PHP公益培训-YY直播-033-字符串面试题讲解

    /** 燕十八 公益PHP培训 课堂地址:YY频道88354001 学习社区:www.zixue.it **/
  • 相关阅读:
    MapReduce1.x与MapReduce2.x差异
    刷题60—排序数组
    刷题59— 圆圈中最后剩下的数字
    刷题58—地图分析
    刷题57—单词的压缩编码
    刷题56—卡牌分组
    刷题55—车的可用捕获量
    刷题54—三维形体的表面积
    刷题53—按摩师
    刷题52—链表的中间结点
  • 原文地址:https://www.cnblogs.com/lgs198712/p/2912711.html
Copyright © 2011-2022 走看看