even

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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
?>

 

posted on 2018-10-06 16:29  even_blogs  阅读(264)  评论(0编辑  收藏  举报