1、addcslashes
要向字符串中的特定字符添加反斜杠
<?php header('Content-type:text/html;charset=utf8'); $str='are you ok ???'; echo addcslashes($str,'a..z'); //注意中间是两个点,如果要指定多个字符,那么可以单列出来,如 addcslashes($str,'abr'); //返回值是 \a\r\e \y\o\u \o\k ??? ?>
2、addslashes 与 stripslashes
addslashes在特定的字符前加上反斜线。这些字符是单引号,双引号,反斜线与NULL。
stripslashes是对addslashes的反转
<?php header('Content-type:text/html;charset=utf8'); $str='are "you" ok \???'; $t= addslashes($str); echo $t; //输出值是 are \"you\" ok \\??? echo stripslashes($t); //输出值是 are "you" ok \??? ?>
3、bin2hex与hex2bin函数
bin2hex:表示把ASCII码字符的字符串转成十六进制
hex2bin:是对bin2hex函数的反转
<?php header('Content-type:text/html;charset=utf8'); $str = 'are you ok ???'; $code = bin2hex($str); echo $code; //输出 61726520796f75206f6b203f3f3f echo '<br>'; echo hex2bin($code); //输出 are you ok ??? ?>
4、chunk_split
chunk_split(string,length,end)
string=>表示需要分割的字符串
length=>表示分割的长度
end=>表示分割后的结尾字符串
<?php header('Content-type:text/html;charset=utf8'); $str = 'are you ok ???'; echo chunk_split($str,10,'__'); //如果最后一个不够,那么end最加在最后一位上 //输出结果 are you ok__ ???__ 注意本函数不改变原有的字符串 ?>
5、convert_uuencode与convert_uudecode函数
表示对指定的字符串进行编码以及解码,返回编码或解码后的字符串,如果失败,那么返回false
<?php header('Content-type:text/html;charset=utf8'); $str = 'are you ok ???'; $exa = convert_uuencode($str); echo $exa; //输出值为 .87)E('EO=2!O:R`_/S\` ` echo '<br>'; echo convert_uudecode($exa); //输出值为 are you ok ??? ?>
6、htmlentities与htmlspecialchars
两者使用方法一样,参数一样,前者转义一些特殊字符,如欧元等
一般来说,使用 htmlspecialchars 转化掉基本字符就已经足够了,没有必要使用 htmlentities。实在要使用 htmlentities 时,要注意为第三个参数传递正确的编码
用法 htmlspecialchars(string,flags,character-set,double_encode)
<?php header('Content-type:text/html;charset=utf8'); $str='<a href="test.html">\'测试页面\'</a><script>alert(213)</script>'; echo $str; echo "<hr/>"; echo htmlentities($str); echo "<hr/>"; echo htmlspecialchars($str,ENT_QUOTES); ?>
7、html_entity_decode与htmlspecialchars_decode
该函数分别是对htmlentities与htmlspecialchars进行返转
用法:html_entity_decode(string,flags,character-set)
<?php header('Content-type:text/html;charset=utf8'); $str='<a href="test.html">\'测试页面\'</a><script>alert(213)</script>'; $token=htmlspecialchars($str,ENT_QUOTES); echo html_entity_decode($token);
echo htmlspeialchars_decode($token); //输出则为被转义后的HTML,可以被页面解读 ?>
8、implode 与 explode
implode(separator,array) 用指定分隔符把数组拼成字符串
explode(separator,string,limit) 以指定的分隔符把字符串分割成数组,limit为0时表示返回包含一个元素的数组,limit>0时返回包含最多 limit 个元素的数组,limit<0时
返回包含除了最后的 -limit 个元素以外的所有元素的数组
<?php header('Content-type:text/html;charset=utf8'); $arr = ['a' => 'this is a', 'b' => 'this is b', 'c' => 'this is c', 'd' => 'this is d']; $str = implode('-', $arr); echo $str; //输出 'this is a-this is b-this is c-this is d' echo '<br/>'; var_dump(explode('-', $str, 0)); //输出 array(1) { [0]=> string(39) "this is a-this is b-this is c-this is d" } echo '<br>'; var_dump(explode('-', $str, 2)); //输出 array(2) { [0]=> string(9) "this is a" [1]=> string(29) "this is b-this is c-this is d" } echo '<br>'; var_dump(explode('-', $str, -1)); //输出 array(3) { [0]=> string(9) "this is a" [1]=> string(9) "this is b" [2]=> string(9) "this is c" } ?>
9、lcfirst、ucfirst 与 ucwords
lcfirst(string) 把首字母转成小写
ucfirst(string) 把首字母转成大写
ucwords(string) 把每个单词的首字线转成大写的
<?php header('Content-type:text/html;charset=utf8'); $str = 'Hello World'; echo lcfirst($str); //输出 hello World $str = 'hello world'; echo ucfirst($str); //输出 Hello world echo ucwords($str); //输出 Hello World ?>
10、ltrim、rtrim与trim
分别表求删除左侧,右侧及左右两侧的空白字符及其他预定义符
11、md5 与 md5_file ,sha1与sha1_file,uniqid
前者计算指定字符的散列值而后者是计算指定文件的散列值
md5(string,raw) raw为true时返回原始 16 字符二进制格式 raw为false时默认32 字符十六进制数
sha1用法类似md5
uniqid($prefix,$more_entropy
= false) $prefix表示产生字符串的前缀,$more_entropy为true的时候,唯一性更强
<?php header('Content-type:text/html;charset=utf8'); $str = 'this is test'; echo md5($str); //输出值 8c6d115258631625b625486f81b09532 ?>
12、nl2br
在字符串中的每个新行(\n)之前插入 HTML 换行符(<br> 或 <br />)。
<?php header('Content-type:text/html;charset=utf8'); //注意要用双引号,不要用单引号 $str = "this is test \nare you ok"; echo nl2br($str); //输出为 this is test // are you ok ?>
13、chr 与 ord
ord表示把字符串转化成ASCII码(只转化第一个字符)
chr表示把对应的ASCII码转化成对应的字符
<?php header('Content-type:text/html;charset=utf8'); $str='ab'; $change=ord($str); echo $change; //输出 97 echo chr($change); //输出 a ?>
14、number_format
把数字进行格式化,输出结果为字符型
number_format(number,decimals,decimalpoint,separator)
<?php header('Content-type:text/html;charset=utf8'); $num=1234567.9876543; echo number_format($num); //输出 1,234,568 $str = number_format($num,3,'-','+'); echo $str; //输出 1+234+567-988 var_dump(is_numeric($str)); //输出 false ?>
15、crypt
单向字符串散列
语法:crypt(str,salt) 如果省略salt,那么由系统随机产生一个盐值进行加密
<?php header('Content-type:text/html;charset=utf8'); $num='are you ok???'; echo crypt($num,'test'); //输出 terXoxTtFKU3U ?>
16、strcmp 、 strcasecmp、strncmp与strncasecmp
strcmp(string1,string2) 比较两个字符串是否相等(区分大小写)
strcasecmp(string1,string2)比较两个字符串是否相等(不区分大小写)
返回值0表示相等,1表示string1大于string2,-1表示string1小于string2;
strncmp(string1,string2,length),表示比较前length个字符(区分大小写)
strncasecmp(string1,string2,length),表示比较前length个字符(不区分大小写);
返回值0表示相等,>0表示string1大于string2,<0表示string1小于string2;
<?php header('Content-type:text/html;charset=utf8'); $str1='are you ok'; $str2='ARE YOU OK'; $str3='are You ok'; var_dump(strcmp($str1,$str2)); //输出 1 var_dump(strcasecmp($str1,$str2)); //输出 0 var_dump(strncmp($str1,$str3,4)); //输出 0 var_dump(strncmp($str1,$str3,5)); //输出 1 var_dump(strncasecmp($str1,$str3,5)); //输出 0 ?>
17、parse_str
表达式parse_str(string,array),第一个参数表示需要分解的目录字符串,第二个参数表示解析出来的结果将会被放置在array里面
<?php header('Content-type:text/html;charset=utf8'); $str = 'name=aaa&age=30&sex=男'; parse_str($str, $arr); var_dump($arr); //输出 array(3) { ["name"]=> string(3) "aaa" ["age"]=> string(2) "30" ["sex"]=> string(3) "男" } parse_str($str); echo $name, $age, $sex; //输出 aaa30男 ?>
18、print
print 实际上不是一个函数(它是一个语言结构),因此你不使用圆括号来括起它的参数列表也可以。
与echo 的区别是echo 可以通过;号实现多个输出,而print一次只能输出一个
19、printf ,sprintf ,vprintf ,fprintf与fvprintf
注意以下常用format字符串
%d - 带符号十进制数 , %u - 无符号十进制数 , %f - 浮点数(locale aware), %s - 字符串
printf(string,format)直接输出格式化的内容,返回的是字符串的长度
<?php header('Content-type:text/html;charset=utf8'); //注意第二个次引用第一个format参数的时候的写法 $len = printf('今天电脑的价格是 %.2f,明天的价格有可能还是%1$.2f', 5623.683); //直接输出 今天电脑的价格是 5623.68,明天的价格有可能还是5623.68 var_dump($len); //输出 int(72) ?>
sprintf(string,format)返回格式化的内容
<?php header('Content-type:text/html;charset=utf8'); //注意第二个次引用第一个format参数的时候的写法 $len = sprintf('今天电脑的价格是 %.2f,明天的价格有可能还是%1$.2f', 5623.683); //不会输出 var_dump($len); //输出 string(72) "今天电脑的价格是 5623.68,明天的价格有可能还是5623.68" ?>
vprintf(string,array)用法与printf一样,只是第二个参数传入的是个数组
<?php header('Content-type:text/html;charset=utf8'); //注意第二个次引用第一个format参数的时候的写法 $len = vprintf('今天电脑的价格是 %.2f,明天的价格有可能还是%1$.2f', [1234.567]); //直接输出 今天电脑的价格是 1234.57,明天的价格有可能还是1234.57 var_dump($len); //输出 int(72) ?>
fprintf(file,string,format)把模式化后的内容写入到文件file中
<?php header('Content-type:text/html;charset=utf8'); if (!($fp = fopen('test.txt', 'w'))) { return; } $len = fprintf($fp, "今天的电脑价格是%.2f,明天的电脑有可能还是%1$.2f", 8888.987); // 把 今天的电脑价格是8888.99,明天的电脑有可能还是8888.99 写入到文件test.txt中,如果要以追加的形式写入文件,那么可以改变fopen的模式 var_dump($len); //输出 int(69) ?>
sprintf('INSERT INTO `user` (`user`, `pwd`) VALUE (%s, %1$.s), (%2$.s,%2$.s)', $db->quote('aaa'), $db->quote('bbb'));
fvprintf(file,string,array)作用与 fprintf() 函数类似,但是接收一个数组参数
20、quotemeta
quotemeta(string)表示的string内的特殊字符. \ + * ? [ ^ ] ( $ )(可能用作正则表达式的转义)
<?php header('Content-type:text/html;charset=utf8'); $str = '\are.you?o+k*[haha]~~^??$'; echo quotemeta($str);
//输出 \\are\.you\?o\+k\*\[haha\]~~\^\?\?\$ ?>
21、str_pad与str_repeat
str_pad(string,length,pad_string,pad_type) string表示目标字符串,length表示目标长度,pad_string表示填充的内容,pad_type表示填充的位置分别有0,1,2
str_repeat(string,multiplier) string表示目标字符串,multiplier表示重复的次数
<?php header('Content-type:text/html;charset=utf8'); $str = 'abc'; //注意:这里的长度表示总长度包含目标字符串 echo str_pad($str, 6, '~', 0); //输出 ~~~abc echo str_pad($str, 6, '~', 1); //输出 abc~~~ echo str_pad($str, 6, '~', 2); //输出 ~abc~~ echo str_repeat($str, 3); //输出 abcabcabc ?>
22、strlen,strrev,str_shuffle,str_rot13
strlen(string) 返回目标字符串的长度
strrev(string) 返回字符串返转后的结果
str_shuffle(string) 随机排序string后返回
str_rot13(string) 对字符串执行 ROT13 转换,如果把转换后的字符串传入,那么会进行反转
<?php header('Content-type:text/html;charset=utf8'); $str = 'are you ok???'; echo strlen($str); //输出 13 echo strrev($str); //输出 ???ko uoy era echo str_shuffle($str); //输出 o? okeuy?ra ?(每次输出的都不一样) $rot = str_rot13($str); echo $rot; //输出 ner lbh bx??? echo str_rot13($rot); //输出 are you ok??? ?>
23、str_replace,str_ireplace,strtr
str_replace与str_ireplace的用法是一样的,前者区分大小写,而后者不区分大小写
str_replace(find,replace,string,count) find表示需要替换的内容,可以为string类型也可以为array类型,replace为替换后的内容可以为string类型也可以为array类型的,并且与find成一一对应的关系,string为需要替换的字符串或者数组,count表示为计数器,返回替换的次数
strtr表示转换字符串中特定的字符,如果 from
与 to
长度不相等,那么多余的字符部分将被忽略。 str
的长度将会和返回的值一样,并且strtr具有迁移性,能够把所以应的字符向两侧进行延伸替换,具体见例子
strtr(string,from,to) 也可以是strtr(string,array),array里面的key对应的是要修改的值,value对应的是修改后的值
<?php header('Content-type:text/html;charset=utf8'); $arr = ['first', 'second', 'third', 'fourth', 'fifth']; $str = 'r>are you ok???'; echo str_replace('are you', 'today is', $str, $count); //输出 r>today is ok??? echo $count; //输出 1 echo str_replace(['are', 'you'], ['aaa', 'bbb'], $str, $count1); //输出 r>aaa bbb ok??? echo $count1; //输出 2 var_dump(str_replace(['first', 'second', 'third'], ['aaa', 'bbb', 'ccc'], $arr, $count2)); //输出 array(5) { [0]=> string(3) "aaa" [1]=> string(3) "bbb" [2]=> string(3) "ccc" [3]=> string(6) "fourth" [4]=> string(5) "fifth" } echo $count2; //输出 3 echo strtr($str, 'are', '===='); //输出 =>=== you ok??? 本例子不仅把are进行了替换同时向两侧推进把第一个r也进行了替换 ?>
24、str_split、strtok
str_split(string,length)表示按照length指定的长度对string进行划分,如果最后一个不满足长度,那么就把剩余的返回,返回值是一个数组,如果没有传length,那么默认为1;
strtok(string,split)表示根据split分割符对string进行拆分,返回第一部份,同进内部会记住其在字符串中的位置,下次调用的时候会向下执行。
<?php header('Content-type:text/html;charset=utf8'); $str = 'are you ok???'; var_dump(str_split($str, 4)); // 输出 array(4) { [0]=> string(4) "are " [1]=> string(4) "you " [2]=> string(4) "ok??" [3]=> string(1) "?" } var_dump(str_split($str)); // 输出 array(13) { [0]=> string(1) "a" [1]=> string(1) "r" [2]=> string(1) "e" [3]=> string(1) " " [4]=> string(1) "y" [5]=> string(1) "o" [6]=> string(1) "u" [7]=> string(1) " " [8]=> string(1) "o" [9]=> string(1) "k" [10]=> string(1) "?" [11]=> string(1) "?" [12]=> string(1) "?" } $toke = strtok($str, ' '); while ($toke !== false) { echo $toke, '<br>'; $toke = strtok(' '); //注意这个地方的写法,无需传入string } //输出 are // you // ok??? ?>
25、strpos、stripos、strrpos 和 strstr、stristr
strpos与stripos的用法是一致的后者表示不区分大小写,前者需要区分大小写。
strpos(string,find,start)string表示目标字符串,find表示需要寻找的字符,start表示开始找的位置
strrpos(string,find,start)表示查找字符串在另一字符串中最后一次出现的位置。
strstr(string,search,before_search)表示返回目标字符串第一次出现所查询字符串位置到最后(含本身,并且区分大小写,与stristr相对),string表示目标字符串,search表示所要查询的字符串,before_search表示是否返回前面部份,默认为false如果目标字符串包含所查询的字符串则返回对应的字符串,否则返回false
strrchr(string, needle) 查找指定字符在字符串中的最后一次出现,该函数返回needle出现的位置(含)到最后
<?php header('Content-type:text/html;charset=utf8'); $str = 'are you ok???'; echo strpos($str, 'o'); //输出 5 echo strpos($str, 'o', 6); //输出 8 echo strrpos($str, 'o'); //输出 8 echo strstr($str, 'e'); //输出 e you ok??? echo strstr($str, 'e', true); //输出 ar ?>
<?php header('content-type:text/html;charset=utf-8'); //是否打印错误 ini_set('display_errors', true); $str = 'are you ok???'; echo strrchr($str, 'k'); //输出 k??? ?>
26、strtolower 和 strtoupper
strtolower(string)把单词全部转换成小写
strtoupper(string)把单词全部转换成大写
<?php header('Content-type:text/html;charset=utf8'); $str = 'are you ok???'; $txt = strtoupper($str); echo $txt; //输出 ARE YOU OK??? echo strtolower($txt); //输出 are you ok??? ?>
27、strip_tags
strip_tags(string,allow),string表示指定的字符串,allow有示允许的标签
<?php header('Content-type:text/html;charset=utf8'); $str = "<script>alert('are you ok???')</script><br/><b>today is good day</b><i>haha</i>"; echo strip_tags($str, '<b><i>'); ?>
展示的效果
28、substr、substr_compare、substr_count、substr_replace
substr(string,start,length)主要用于截取指定位置的字符串string表示目标字符串,start表示指定的开始的位置,length表示截取的长度,如果length为负数,那么将会从末尾开始计算
substr_compare(string1,string2,startpos,length,case)主要用于比较两个字符串,string1与string2分别表示需要比较的字符串,startpos表示开始比较的位置,length表示比较的长度,case表示是否区分大小写默认的是false,返回三个结果,0为相等,>0或者<0;
substr_count(string,substring,start,length)计算指定字符在目标字符串中出现的次数,string表示目标字符串,substring表示需要搜索的字符串,start表示规定在字符串中何处开始搜索,length表示搜索的长度
substr_replace(string,replacement,start,length)把字符串的一部分替换为另一个字符串。string表示目标字符串,replacement表示需要替换的字符串,start表示开始的位置,length表示长度
<?php header('Content-type:text/html;charset=utf8'); $str1 = 'today is a good day'; $str2 = 'today is a bad day'; echo substr($str1, 11, -4); //输出 good var_dump(substr_compare($str1, $str2, 0, 4)); //输出 int(0) var_dump(substr_count($str1, "o")); //输出 int(3) echo substr_replace($str1, 'not good', 11, -4); //输出 today is a not good day ?>