燕十八

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-字符串面试题讲解

posted @ 2013-02-15 11:24  启红  阅读(2421)  评论(0编辑  收藏  举报