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>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()系统自带的数字分割函数,以千为单位分割。
//==================================================== 返回目录
分割,连接,反转函数
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>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() 返回目录
- 字符串截取函数
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-字符串系统函数讲解
5.燕十八-PHP公益培训-YY直播-032-字符串函数详解(3)
6.燕十八-PHP公益培训-YY直播-033-字符串面试题讲解
/** 燕十八 公益PHP培训 课堂地址:YY频道88354001 学习社区:www.zixue.it **/