1 <?php
2 header("Content-Type: text/html; charset=utf-8");
3 ?>
4 <head>
5 style
6 {
7 p{ font-size:16px; font-weight:bold; font-family:'微软雅黑', console; }
8 }
9 </head>
10 <?php
11 echo '<pre>';
12 function var_array($array)
13 {
14 echo '<pre>';
15 var_dump($array);
16 echo '</pre>';
17 }
18 function printr($array)
19 {
20 echo '<pre>';
21 print_r($array);
22 echo '</pre>';
23 }
24 function getArr($sNum, $eNum=1, $step=1)
25 {
26 $arr = range($sNum, $eNum, $step);
27 $reArr = array();
28 foreach($arr as $v)
29 {
30 $reArr[$v] = rand(0,10);
31 }
32 unset($arr);
33 return $reArr;
34 }
35
36 /**
37 * php字符串处理函数
38 */
39 //---------------------------------------------
40 //str_getcsv 解析csv字符串为一个数组(和excel有关?)
41 //str_getcsv('待解析字符串', [字段界定符], [字段包裹字符],[转义字符 = '\'])
42
43
44 echo '<br /><hr><br />';
45
46 //str_replace() 字符串查找替换
47 //str_replace('search 查找的字符','replace 要被替换的字符', 'string 进行查找替换操作的字符串', 'count 替换次数 = int不限制')
48 //查找$string里边为 search的字符,并用replace替换掉这些内容。如果设置了count,那么将决定可以替换几次
49 //区分大小写版本:str_ireplace()
50 //该函数也可用于数组
51 $string = 'test str_replace function. hello str_replace! hello php!, hello china, chery, benz';
52 //普通替换
53 echo str_replace('hello', 'hi', $string),'<br />';
54 //指定count参数 --感觉不出有啥意义
55 $count = 1;
56 echo str_replace('hello', 'hi', $string, $count),'<br />';
57
58
59 echo '<br /><hr><br />';
60 //str_pad() 使用另一个字符串填充当前字符串以达到指定长度
61 //str_pad('$input 当前要填充字符串', '$int 整个字符串的长度', '$str 填充进来的字符', '$type 决定是填充到右边STR_PAD_RIGHT/左边STR_PAD_LEFT/两端同时开始STR_PAD_BOTH')
62 $input = 'str_pad';
63 //不指定$str
64 echo str_pad($input, 10),'<br />';
65 //指定$str
66 echo str_pad($input, 15, ','),'<br />';
67 //如果$int小于当前$input的长度,他会出什么情况呢? => 他不会做任何填充
68 echo str_pad($input, 7, '2'),'<br />';
69
70
71 echo '<br /><hr><br />';
72 //str_repeat 将当前字符串重复N次
73 //str_repeat('$intpu 要重复的字符串', '$int 重复次数*')
74 //$int必须大于0,否则返回空字符串!
75 $input = 'str_repeat';
76 echo str_repeat($input, 1),'<br />';
77
78
79 echo '<br /><hr><br />';
80 //str_rot13() 对字符串进行rot13转换->可以理解为字符串加密
81 //str_rot13('$string 要转换的字符串')
82 //该函数只对字符串中的字母进行转换!如果是特殊字符或数字,将不做处理
83 //rot13转换:在26个字母中,用当前字母后边第13个字母替换当前字母!所以,解密只要在在执行一次该方法即可
84 $string = 'str_rot13()';
85 echo '加密:',str_rot13($string),'<br />';
86 echo '解密:',str_rot13(str_rot13($string)),'<br />';
87
88
89 echo '<br /><hr><br />';
90 //str_shuffle() 随机打乱一个字符串
91 //str_shuffle('$string 要打乱的字符串')
92 $string = 'str_shuffle()';
93 echo str_shuffle($string),'<br />';
94
95
96 echo '<br /><hr><br />';
97 //str_split() 将字符串按照指定长度组成一个数组 返回一个数组
98 //str_split('$string 待转换的字符串', [$int 多少个字符组成一个键=1])
99 $string = 'str_split()';
100 var_array(str_split($string, 3));
101
102
103 echo '<br /><hr><br />';
104 //str_word_count() 统计当前字符串里有多少单词? 可以理解为将一个字符串按照特殊符号、数字进行分割!
105 //str_word_count('$string', [$int 返回类型], [$charlist 附加的字符串,填上表示该字符串为单词的一部分])
106 $string = 'str_word_count() word, world, earth, good, google, nihao, bendan, shandiche, nicai';
107 //默认
108 echo str_word_count($string),'<br />';
109 //返回一个数组,$int=1
110 var_array(str_word_count($string, 1));
111
112
113 echo '<br /><hr><br />';
114 //strcasecmp() 二进制比较字符串
115 //strcasecmp($str1, $str2) 将字符串转换为二进制,然后在比较
116 $str1 = 'str1';
117 $str2 = 'str2';
118 echo strcasecmp($str1, $str2);
119
120
121 echo '<br /><hr><br />';
122 //strstr() 查询字符串首次出现的位置,并从该位置到末尾的字符串
123 //strstr('$haystack 输入的字符串', '$needle 需要查询的字符串', [true/false = false. ])
124 //区分大小写版:stristr()
125 //strstr()同样也是strchr()的别名函数
126 $string = 'strstr royalstar haers hero';
127 $needle = 'he';
128 echo strstr($string, $needle),'<br />';
129 //第三个参数设置为true,则返回needle在haystack中的位置之前的部分
130 echo strstr($string, $needle, TRUE),'<br />';
131
132
133 echo '<br /><hr><br />';
134 //strcmp() 同strcasecmp()函数,该字符串区分大小写!
135
136
137 echo '<br /><hr><br />';
138 //strcoll() 同strcmp(),但是该函数不是二进制安全的
139
140
141 echo '<br /><hr><br />';
142 //strcspn() 获取不匹配遮罩的起始子字符串的长度 可以理解为:返回$str2的第一个字符串在$str1中首次出现的位置之前的字符串长度。
143 //strcspn($str1, $str2, [$start = 0 查找的起始位置], [$length 查找的长度])
144 $str1 = 'applexiaomi';
145 $str2 = 'a';
146 $start = 4;
147 echo strcspn($str1, $str2, $start),'<br />';
148
149
150 echo '<br /><hr><br />';
151 //strftime() 返回一个指定格式的格式化后的字符串
152 /**
153 * 参数说明
154 * %a - 当前区域星期几的简写
155 ■%A - 当前区域星期几的全称
156 ■%b - 当前区域月份的简写
157 ■%B - 当前区域月份的全称
158 ■%c - 当前区域首选的日期时间表达
159 ■%C - 世纪值(年份除以 100 后取整,范围从 00 到 99)
160 ■%d - 月份中的第几天,十进制数字(范围从 01 到 31)
161 ■%D - 和 %m/%d/%y 一样
162 ■%e - 月份中的第几天,十进制数字,一位的数字前会加上一个空格(范围从 ' 1' 到 '31')
163 ■%g - 和 %G 一样,但是没有世纪
164 ■%G - 4 位数的年份,符合 ISO 星期数(参见 %V)。和 %V 的格式和值一样,只除了如果 ISO 星期数属于前一年或者后一年,则使用那一年。
165 ■%h - 和 %b 一样
166 ■%H - 24 小时制的十进制小时数(范围从 00 到 23)
167 ■%I - 12 小时制的十进制小时数(范围从 00 到 12)
168 ■%j - 年份中的第几天,十进制数(范围从 001 到 366)
169 ■%m - 十进制月份(范围从 01 到 12)
170 ■%M - 十进制分钟数
171 ■%n - 换行符
172 ■%p - 根据给定的时间值为 `am' 或 `pm',或者当前区域设置中的相应字符串
173 ■%r - 用 a.m. 和 p.m. 符号的时间
174 ■%R - 24 小时符号的时间
175 ■%S - 十进制秒数
176 ■%t - 制表符
177 ■%T - 当前时间,和 %H:%M:%S 一样
178 ■%u - 星期几的十进制数表达 [1,7],1 表示星期一
179 */
180 echo strftime('%H'),'<br />';
181
182
183 echo '<br /><hr><br />';
184 //strip_tags() 尝试去掉字符串中所有的html、php标签和空字符串。
185 //strip_tags('$string 待操作的字符串', [allowable_tags 指定不被去除的字符])
186 $string = "<p id='trans-input-head'><span>请输入要翻译的文字内容或者网页地址</span><a id=empty-input-btn href='###'>清空</a></p><div id='trans-input-container'><div id=hightlight-mask></div><textarea id=user-input class='user-input' spellcheck=false></textarea>";
187 echo strip_tags($string),'<br />';
188 //echo '设置第二个参数:',strip_tags($string, 'span'),'<br />'; 不明白怎么搞
189
190
191 //------------------------------需细看---------------------------------
192 echo '<br /><hr><br />';
193 //stripcslashes() 返回转以后的字符串 去除带哦那些转义字符
194 //stripcslashes('$string')
195 $string = "<span>请输入要翻译的文字内容或者网页地址</span>href='###'清空='user-input' <ea>";
196 echo stripcslashes($string),'<br />';
197
198
199 echo '<br /><hr><br />';
200 //addcslashes()
201 //------------------------------需细看---------------------------------
202
203
204 echo '<br /><hr><br />';
205 //strpos() 查找字符串首次出现的位置
206 //strpos('$string', '$needle 要在$string中查找的字符串', [$int 指定从$int里哪一个位置开始查找])
207 //stripos()函数 区分大小写!
208 $string = 'strpos()';
209 $needle = 'p';
210 //普通查询 如果$needle在$string的第一个字母出现则返回0。需用 ===全等 来判断
211 echo strpos($string, $needle),'<br />';
212
213
214 echo '<br /><hr><br />';
215 //stripslashes 反引用一个引用字符串 将字符串里边的转义字符'\'给去掉吗?难道只是去掉 '\'???
216 //stripslashes('$string')
217 $string = "Is your name O\'re\illy?";
218 echo stripslashes($string),'<br />';
219
220
221 echo '<br /><hr><br />';
222 //strlen() 计算字符串的长度
223 //strlen($string)
224 $string = 'strlen()';
225 echo strlen($string),'<br />';
226
227
228 echo '<br /><hr><br />';
229 //strnatcasecmp() 使用‘自然顺序算法’比较字符串
230 //strnatcasecmp($str1, $str2)
231 //strnatcmp($str1, $str2) 该函数区分大小写
232 echo strnatcasecmp($str1, $str2),'<br />';
233
234
235 echo '<br /><hr><br />';
236 //strncasecmp() 二进制安全比较字符串开头的N个字符(不区分大小写)
237 //strncasecmp($str1, $str2, [$int])
238 echo strncasecmp($str1, $str2, 2),'<br />';
239
240
241 echo '<br /><hr><br />';
242 //strpbrk() 在$string字符串中匹配$char,如果$char中有一个字符串匹配到$string,那么则返回当前位置后的字符串
243 //strpbrk('$string', '$char 要匹配的字符')
244 $string = 'strpbrk()';
245 $char = 'rt';
246 echo strpbrk($string, $char),'<br />';
247
248
249
250 echo '<br /><hr><br />';
251 //strptime() 返回一个将date解析后的数组
252 //strptime()
253
254
255 echo '<br /><hr><br />';
256 //strrev() 将字符串倒转输出
257 //strrev($string)
258 $string = 'strrev()';
259 echo strrev($string),'<br />';
260
261
262 echo '<br /><hr><br />';
263 //strripos() 查找某字符在指定字符串里最后一次出现的位置 同strpos()相反
264 //strripos('$string 当前字符串', '$needle 要查找的字符串', [$int $offset])
265 $string = 'strripos';
266 echo strripos($string, 'i'),'<br />';
267
268
269 echo '<br /><hr><br />';
270 echo '<h3>转义字符 addslashes()</h3>';
271 echo '<p>对指定的字符串进行转义,给字符串添加斜线‘\’。主要用于生成sql语句时。</p>';
272 echo '<p>如果magic_quotes_sybase在php.ini中设置成on,那么所有的 GET、POST 和 COOKIE语句将被自动转义,就不需要使用该函数了。遇到这种情况时可以使用函数 get_magic_quotes_gpc()进行检测</p>';
273 //tip:如果开启了
274 $str = "<p class='post_item_summary'><a href='http://www.cnblogs.com/esion/' target='_blank'><img align='left' class='pfs' src='http://pic.cnblogs.com/face/u430668.jpg?id=25090927' alt=''></a>在PHPCms内容页中,出于安全考虑,默认是禁止JavaScript脚本的,所以我们在添加文章时,虽然加入了js代码,但实际上并没有起作用,而是以文本形式显示。如果要让内容页支持JavaScript,则要做以下修改: 在文件..\caches\caches_model\caches_data\con</p>";
275 echo '原始语句:',htmlspecialchars($str),'<br />';
276 echo '转义语句:',htmlspecialchars(addslashes($str));
277
278 echo '<br /><hr><br />';
279 echo '<h3>还原字符 stripslashes()</h3>';
280 echo '<p>用于经过addslashes()转义后的字符串。将‘\’给删掉</p>';
281 echo 'stripslashes()还原后的字符串:',htmlspecialchars(stripslashes(addslashes($str)));
282
283
284 echo '<br /><hr><br />';
285 echo '<h3>字符串截取 substr(str, strart, end)</h3>';
286 echo '<p>对一段字符串进行截取。
287 <br>1.中文由于占两个字符,所以该函数在中文环境下使用时会截成乱码!<br>
288 </p>';
289 $str = "在PHPCms内容页中,出于安全考虑,默认是禁止JavaScript脚本的,所以我们在添加文章时,虽然加入了js代码,但实际上并没有起作用,而是以文本形式显示。如果要让内容页支持JavaScript,则要做以下修改: 在文件..\caches\caches_model\caches_data\con...";
290 echo "substr截取字符串:",substr($str, 0, 51),'...<br />';
291 echo chr(27),'<br />';
292
293 echo '<br /><hr><br />';
294 echo '<h3>html转换函数 htmlentities()</h3>';
295 echo '<p>讲一段字符串中的所有 [本来就没有htmlspecialchars好使]</p>';
296 $str = '<td class="f"><h3 class="t"><a onmousedown="return c({ "fm":"as", "F":"778317EA", "F1":"9D73F1E4", "F2":"4CA6DE6B", "F3":"54E5243F", "T":"1343224672", "title":this.innerHTML, "url":this.href, "p1":3, "y":"EF7CCFF7" })" href="http://www.cnblogs.com/qiantuwuliang/archive/2009/07/16/1525139.html" target="_blank">整理一下收集的<em>PHP字符串截取函数</em> - 钱途无梁 - 博客园</a></h3> <font size="-1"> 不管是uft-8编码转换为gb2312,还是将 gb2312 转换为 uft-8 ,都是一样道理,<em>php</em>4.3.1以后的iconv<em>函数</em>很好用的,只是需要自己写一个uft8到unicode的转换<em>函数</em>查...<br> <span class="g"> www.cnblogs.com/qiantuwuliang/archive/200 ... 2012-7-22 </span> - <a href="http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f73260878e482a958448e435061e5a25b8e87b645741949b27345dfa540faaa16c2973543db799ca8357dfbe8f2b2b952433701b854019c419d891007a9f34d507a9f916a5e0b22592dec5a5da4325ce44757f9784fb4d0164dd1ff6034294b19838022f66ad9b3a728e53605a9c3441c6508993251d739687ae4b38b5&p=8b2a9359caaf0eff57ed913e157a&user=baidu&fm=sc&query=php%D7%D6%B7%FB%B4%AE%BD%D8%C8%A1%BA%AF%CA%FD&qid=bff150e30ba03f8f&p1=3" target="_blank" class="m"> 百度快照</a><span class="liketip" id="like_3083181530076642001"></span><br> </font></td>';
297 echo 'html转换后的内容:',htmlspecialchars($str),'<br />';
298
299
300 echo '<br /><hr><br />';
301 echo '<h3>',htmlspecialchars('动态xml输出 $str=<<<mark \'xxxx内容啊\' mark;'),'</h3>';
302 echo '<p>没有实际用过,不明白</p>';
303
304
305 echo '<br /><hr><br />';
306 echo '<h3>返回ASCII码值 ord()</h3>';
307 echo '<p>只返回第一个字符的ascii码值</p>';
308 echo '<p>十六进制表示区间:01-7f表示[0-9][aA-zZ][特殊字符]区间 ,各占一个字节</p>';
309 echo '<p>utf8字符是3个字节 GBK是2个字节数</p>';
310 echo ord('你猜'),'<br />';
311
312 echo '<br /><hr><br />';
313 echo '<h3>截取字符串 mb_substr(str, start=0, end=0, codetype)</h3>';
314 echo '<p>php扩展函数,使用时需要服务器开启php_mbstring.dll扩展才行</p>';
315 echo '<p>该函数按照字来分</p>';
316 echo '使用mb_substr截取字符串:',mb_substr(htmlspecialchars($str), 0, 80, 'utf8'),'<br />';
317
318
319
320
321
322 ?>