/************************************第五章 字符串*****************************************/ /第一题({}[])/// echo'<br>'."第一题第一题({}[])".'<br>'; /*$str="abcdefghijklmnopqrstuvwxyz"; $ary=array(15,7,15); foreach($ary as $v) { //echo $v; echo $str{$v};//大括号和中括号的区别是什么 //echo $str[$v]; }*/ //第二题(implode)/// echo'<br>'."第二题(implode)".'<br>'; /*$str1='abc'; $str2='def'; //echo $str1+$str2;//0 //echo "{$str1}";//abc //echo "{$str1}{$str2}";//abcdef //echo $str1.$str2;//abcdef //echo implode('',array($str1,$str2));//implode ( string $glue , array $pieces ) : string;implode ( array $pieces ) : string(两种参数顺序)将一维数组的值连接为一个字符串。 echo implode(array($str1,$str2));*/ //第三题(substr,strpos,strstr,strchr,strrpos)/ echo'<br>'."第三题(substr,strpos,strstr,strchr,strrpos)".'<br>'; //$email="user@example.com"; //echo substr($email,strpos($email,'@'));//结果:@example.com //echo substr($email,strpos($email,'@')+1);//结果:example.com /*语法:substr ( string $string , int $start [, int $length ] ) : stringsubstr ( string $string , int $start [, int $length ] ) : 定义:string返回字符串 string 由 start 和 length 参数指定的子字符串。*/ //echo strpos($email,'@');//4 /*语法:strpos ( string $haystack , mixed $needle [, int $offset = 0 ] ) : int 定义:返回 needle 在 haystack 中首次出现的数字位置。*/ //echo strrpos($email,'@');//结果:4 /*语法:strrpos ( string $haystack , string $needle [, int $offset = 0 ] ) : int 定义:返回字符串 haystack 中 needle 最后一次出现的数字位置*/ //echo strstr($email,'@');//结果:@example.com /*语法:strstr ( string $haystack , mixed $needle [, bool $before_needle = FALSE ] ) : string 定义:返回 haystack 字符串从 needle 第一次出现的位置开始到 haystack 结尾的字符串。*/ //echo strchr($email,'@');//结果:@example.com /*语法:strchr ( string $haystack , mixed $needle [, bool $before_needle = FALSE ] ) : string 定义:strstr的别名 返回 haystack 字符串从 needle 第一次出现的位置开始到 haystack 结尾的字符串。*/ /第四题(extract,explode,strtok)/ echo'<br>'."第四题(extract,explode,strtok)".'<br>'; //$str='1,2,3,4'; //echo extract($str); //问题:什么是字符表 /*语法:extract ( array &$array [, int $flags = EXTR_OVERWRITE [, string $prefix = NULL ]] ) : int 定义:将变量从数组中导入到当前的符号表中。*/ //print_r(explode(',',$str));//结果:Array([0]=>1[1]=>2[2]=>3[3]=>4) /*语法:explode ( string $delimiter , string $string [, int $limit ] ) : array 定义:返回数组,每个元素都是 string 的一个子串,它们被字符串 delimiter 作为边界点分割出来。*/ //var_dump(strtok($str,','));//结果:1 //问题:为什么结果会是1 /*语法:strtok ( string $str , string $token ) : string 第二种:strtok ( string $token ) : string 定义:将字符串 str 分割为若干子字符串,每个子字符串以 token 中的字符分割 用法:如果字符串是 "This is an example string",你可以使用空格字符将这句话分割成独立的单词。*/ //第五题(==,strcasecmp,strcmp) echo'<br>'."第五题(==,strcasecmp,strcmp)".'<br>'; //$str1='abc'; //$str2='ABC'; //echo $str1==$str2;//结果:无 //echo strcasecmp($str1,$str2);//结果:0 /*语法:strcasecmp ( string $str1 , string $str2 ) : int 定义:二进制比较字符串 str1 < str2 返回 < 0; 如果 str1 > str2 返回 > 0;如果相等,返回 0。 注意:不区分大小写*/ //echo strcmp($str1,$str2);//结果:1 /*语法:strcmp ( string $str1 , string $str2 ) : int 定义:二进制比较字符串 str1 < str2 返回 < 0; 如果 str1 > str2 返回 > 0;如果相等,返回 0。 注意:区分大小写*/ ///第六题(正则,preg_match)// echo'<br>'."第六题(正则,preg_match)".'<br>'; //正则表达式 /*组成:元字符、文本字符 注意:区分大小写 定界符:/ 元字符: 行定位符:^行的开始 列子:^tm以tm开头的字符; $行的结尾 例子:tm$以tm结尾的字符; 字符随意位置 例子:tm包含tm的字符 单词分界符:\b完整的单词 例子:\btm\b包含tm完整单词的字符 \B不完整的单词 例子:\Btm\B包含tm一部分单词的字符 字符类:[]单字符匹配 例子:[Tt][Mm]不区分大小写写法 (|)选择字符 例子:(M|m)字符串有M或 -连字符 例子:[a-zA-Z]所有字母集 [^]排除字符 例子:[^a-z]去掉所有小写字母 限定符: ?匹配前面字符零次或一次 例子:go?g结果为gg或者gog +匹配前面字符一次或多次 例子:go+g结果为gog或者go……g *匹配前面字符零次或多次 例子:go*g结果为gg或者go……g {n}匹配前面字符n次 例子:go{2}g结果为goog {n,}匹配前面字符最少n次 例子:go{2,}g结果为goog或者go……g {n,m}前面字符最少n次最多m次 例子:go{0,1}g结果为gg或者gog .点字符匹配换行符外任意字符 例子:^r.s.*t结果为r[a-zA-Z]s[a-zA-Z]*t ()括号字符改变限定符范围还有分组 例子:(thir|four)th结果为thirth或者fourth ()\反相引用 等我看懂在说*/ //$str='/.*/';//结果:1 //$str='/...|......../';//结果:1 //$str='/\d{3}\|\d{8}/';//结果为:0 //$str='/[az]{3}\|[az]{9}/';//结果为:0 //$str='/[a-z][a-z][a-z]\|\w{9}/';//结果为:0 \w:任意大小写字母和数子 \W:任意非单词字符 //$str2='php|architec'; //echo preg_match($str,$str2); /*语法:preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] ) : int 定义:搜索subject与pattern给定的正则表达式的一个匹配.返回0或1*/ 第七题(md5,sha1,str_rot13,crypt,crc32)/// echo'<br>'."第七题(md5,sha1,str_rot13,crypt,crc32)".'<br>'; //问题:字符串完整性是什么 //$str='abcd'; //echo md5($str);//结果:e2fc714c4727ee9395f324cd2e7f331f /*语法:md5 ( string $str [, bool $raw_output = FALSE ] ) : string 定义:计算字符串的 MD5 散列值*/ //echo sha1($str);//结果为:81fe8bfe87576c3ecb22426f8e57847382917acf /*语法:sha1 ( string $str [, bool $raw_output = false ] ) : string 定义:计算字符串的 sha1 散列值*/ //echo str_rot13($str);//结果:nopq /*语法:str_rot13 ( string $str ) : string 定义:对 str 参数执行 ROT13 编码并将结果字符串返回。 注意:编码和解码都使用相同的函数,传递一个编码过的字符串作为参数,将得到原始字符串。*/ //echo @crypt($str);//结果:$ 1 $ 9m5.c3 /.$ 0K1tYCs8uT8kjDYEJjefA / /*语法:crypt ( string $str [, string $salt ] ) : string 定义:返回一个基于标准 UNIX DES 算法或系统上其他可用的替代算法的散列字符串。 注意:如果没有salt,crypt()创建出来的会是弱密码。 php5.6及之后在没有它会抛出一个E_NOTICE级别错误。*/ //echo crc32($str);//结果:-310194927 /*语法:crc32 ( string $str ) : int 定义:生成 str 的 32 位循环冗余校验码多项式。这通常用于检查传输的数据是否完整。 注意:由于 PHP 的整数是带符号的,所以在 32 位系统上许多 crc32 校验码将返回负整数。*/ ///第八题(file_get_contents,fopen,fread,flock,split_string,file)/ echo'<br>'."第八题(file_get_contents,fopen,fread,flock,split_string,file)".'<br>'; function my_funct($filename) { $f=file_get_contents($filename); /* 语法:file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] ) : string 定义:把文件读入一个字符串。offset 所指定的位置开始读取长度为 maxlen 的内容失败返回 FALSE。 用法:是用来将文件的内容读入到一个字符串中的首选方法*/ return explode('\n',$f); } //print_r(my_funct('text.txt')); //var_dump(fopen("text.txt","r")); /*语法:fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] ) : resource 定义:fopen() 将 filename 指定的名字资源绑定到一个流上。*/ //fread(fopen("text.txt","r"),10); /*语法:fread ( resource $handle , int $length ) : string 定义:从文件指针 handle 读取最多 length 个字节 注意:读取了 length 个字节/到达了文件末尾(EOF)停止读取文件。*/ //echo flock(fopen("text.txt",'r'),LOCK_SH); /*语法:flock ( resource $handle , int $operation [, int &$wouldblock ] ) : bool 定义:轻便的咨询文件锁定*/ //split_string(); //备注:未找到 //print_r(file("text.txt")); /*语法:file ( string $filename [, int $flags = 0 [, resource $context ]] ) : array 定义:把整个文件读入一个数组中。 用方法:可以通过 file_get_contents() 以字符串形式获取文件的内容。*/ 第九题(preg_split,ereg,str_split,chop) echo'<br>'."第九题(preg_split,ereg,str_split,chop)".'<br>'; //$str='a,b,c,d,e'; //$pattern='/[,]/'; //print_r(preg_split($pattern,$str));//结果:Array(0=>a 1=>b 2=>c 3=>d 4=>e); /*语法:preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] ) : array 定义: 通过一个正则表达式分隔字符串失败时返回 FALSE。*/ //echo ereg('/[a-e]{5}/',$str); //备注:已经弃用 /*语法:ereg ( string $pattern , string $string [, array &$regs ] ) : int 定义:正则表达式匹配 注意: preg_match() 函数通常是比 ereg() 更快的替代方案。*/ //print_r(str_split($str));//结果:Array ( [0] => a [1] => , [2] => b [3] => , [4] => c [5] => , [6] => d [7] => , [8] => e ) /*语法:str_split ( string $string [, int $split_length = 1 ] ) : array 定义: 将字符串转换为数组*/ //echo chop($str);//结果:a,b,c,d,e /*语法:chop ( string $str [, string $character_mask ] ) : string 定义:删除字符串末端的空白字符(或者其他字符)rtrim()的别名 注意:chop() 与 Perl 的 chop() 函数有所不同,它会删除字符串的最后一个字符。*/ 第十题(1+2在.运算的写法)/ echo'<br>'."第十题(1+2在.运算的写法)".'<br>'; //echo "Testing".1+2.'45';//结果:错误 //echo "Testing".(1+2).'45';//结果:Testing345 第11题(通过下标改变字符串的值)// echo'<br>'."第11题(通过下标改变字符串的值)".'<br>'; //$s='1234'; //$s[$s[1]]='2'; //echo $s;//结果:1224 第12题(正则表达式用法) echo'<br>'."第12题(正则表达式用法)".'<br>'; echo "问题:怎么输出一个正则表达式".'<br>'; //$pattern='/.*\*123\d/';//理解:一个换行符外任意字符 + * + 123 + 任意一个十进制数 //echo preg_match($pattern,'_*1234');//结果:1 第13题(字符逻辑认知,==,===)/ echo'<br>'."第13题(字符逻辑认知,==,===)".'<br>'; echo "问题:字符等于零?".'<br>'; //var_dump('1top'=='1');//结果:false //var_dump('top'==0);//结果:true //var_dump('top'===0);//结果:false //echo 'a'==a;//结果:错误 //var_dump(123=='123');//结果:true 第14题(字符+整数=?)// echo'<br>'."第14题(字符+整数=?)".'<br>'; //echo "1p1"+10;//结果:11 第15题(strip_tags,fgetss)// echo'<br>'."第15题(strip_tags,fgetss)".'<br>'; //$s=file_get_contents('http://www.php.net'); //strip_tags($s,array('p')); /*语法:strip_tags ( string $str [, string $allowable_tags ] ) : string 定义:返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。 注意:它使用与函数 fgetss() 一样的机制去除标记 语法:fgetss ( resource $handle [, int $length [, string $allowable_tags ]] ) : string 定义:尝试从读取的文本中去掉任何 HTML 和 PHP 标记。*/ //echo count($s);//结果:剔除<p>标签后的 www.php.net 主页的字符数 第16题(stricmp,stristr)// echo'<br>'."第16题(stricmp,stristr)".'<br>'; //$str1='abc'; //$str2='ABC'; //echo strcmp($str1,$str2);//结果:1 //echo stricmp($str1,$str2); //备注;未找到该函数 //echo strcasecmp($str1,$str2);//结果:0 //echo stristr($str1,'b');//结果:bc /*语法:stristr ( string $haystack , mixed $needle [, bool $before_needle = FALSE ] ) : string 定义:返回 haystack 字符串从 needle 第一次出现的位置开始到结尾的字符串。 未找到返回 FALSE。 用法: strstr() 函数的忽略大小写版本*/ 第17题(encode_hex,pack,hex2bin,bin2hex,printf)// echo'<br>'."第17题(encode_hex,pack,hex2bin,bin2hex,printf)".'<br>'; echo "问题:函数没一个看懂了的".'<br>'; //$str='1011'; //echo encode_hex($str); //备注:未找到该函数 //echo pack($str); /*语法:pack ( string $format [, mixed $args [, mixed $... ]] ) : string 定义:根据format将给地的参数打包成二进制字符串。 注意:在那些使用有符号和无符号格式代码的地方pack()函数产生相同的结果。*/ //echo hex2bin($str);//结果:乱码 /*语法:hex2bin ( string $data ) : string 定义:转换十六进制字符串为二进制字符串。*/ //echo bin2hex($str);//结果:31303131 /*语法:bin2hex ( string $str ) : string 定义:把二进制的参数 str 转换为的十六进制的字符串。转换使用字节方式,高四位字节优先。*/ //printf($str);//结果:1011 /*语法:printf ( string $format [, mixed $args [, mixed $... ]] ) : int 定义:依据 format 格式参数产生输出。返回输出字符串的长度。*/ 第18题()// echo'<br>'."第18题".'<br>'; //$str='adcde'; //echo str_pad($str,10,'a');//结果:abcdeaaaaa; /*语法:str_pad ( string $input , int $pad_length [, string $pad_string = " " [, int $pad_type = STR_PAD_RIGHT ]] ) : string 定义:返回 input从左端/右端/两端被填充到指定长度后的结果 注意:pad_string没有指定,将被空格字符填充。*/ 第19题(wordwrap)// echo'<br>'."第19题(wordwrap)".'<br>'; //$a='able osts indy'; //echo wordwrap($a,1,'c',false);//结果:ablecostscindy /*语法:wordwrap ( string $str [, int $width = 75 [, string $break = "\n" [, bool $cut = FALSE ]]] ) : string 定义:使用字符串断点将字符串打断为指定数量的字串。返回打断后的字符串。*/ 第20题()// echo'<br>'."第20题".'<br>'; $x='apple'; echo substr_replace($x,'x',1,2);//结果:axle /*语法:substr_replace ( mixed $string , mixed $replacement , mixed $start [, mixed $length ] ) : mixed 定义:在string的副本中将由 start 和可选的 length 参数限定的子字符串使用 replacement替换。*/
php 字符串
最新推荐文章于 2024-04-13 05:00:00 发布