php字符串函数相关试题场景

来源:互联网 发布:大数据设计哪些技术 编辑:程序博客网 时间:2024/06/05 21:57
// 1、将1234567890转换成1,234,567,890 每3位用逗号隔开的形式。$sss = '1234567890';  // 1,234,567,890;$str = '1234567890xx';//  函数1;function strrevchunk($str){return strrev(trim(chunk_split(strrev($str),3,','),','));}// 函数2;function arr($str){return strrev(implode(',',str_split(strrev($str),3)));}//函数3:function zixie($str){$length = strlen($str);$revstr = strrev($str);$resrev = '';for($i = 0;$i<$length;$i++){$resrev .= substr($revstr,$i,1);if($i%3==2){$resrev .= ',';}}return trim(strrev($resrev),',');}//函数4;function push($str){$length = strlen($str);//$revstr = strrev($str);$arrsplit = str_split($str);$newarr = array();for($i = 0;$i<$length;$i++){array_unshift($newarr,array_pop($arrsplit));if($i%3==2){array_unshift($newarr,',');}}return trim(implode($newarr),',');}//函数5:function numberformat($str){return number_format($str);   // 注意1:此函数,只对数字有效,非数字字符之后的所有字符会省略;    // 注意2:此函数可有1个参数(省去小数点),2个参数(小数点保留位数),4个参数(小数点标记表示形式,千分位标记表示形式);}//函数6:function arrsplice($str){$length = strlen($str);                // 原始字符串长度;$biaojishu = floor($length/3);         //需要在字符串中插入、添加的字符标记个数(每三字符后添加一个字符);    $zongchang = $length + $biaojishu;     // 在原始字符串中插入字符后,得到最后的字符串总长度;$strrev = strrev($str);                // 先将字符串反转;$strtoarr = str_split($strrev);        // 将字符串中每个字符(字节)分割成数组;for($i = 0;$i<$zongchang;$i++){array_splice($strtoarr,$i,0);      // 没有新的内容对截取的内容进行修改,保持原数组样式;if(($i%4 ==3)&&($i!=$zongchang-1)){ //每三个字符后,插入一个字符,新插入字符的位置在4个中最后一位;(3,7,11...从0开始标记的); 如果是末尾的标记则省略(如:123,456,则只需要123,456); array_splice($strtoarr,$i,0,',');   // 在此位置插入','(标记)字符;}}return strrev(implode($strtoarr));}


// 使用五种以上方式获取一个文件的扩展名;//要求:dir/upload.image.jpg,找出 .jpg 或者 jpg ,$filestr = 'dir/upload.image.jpg';//函数1;function strposstr($filestr){return substr($filestr,strrpos($filestr,'.'));}// 函数2;function strrchrstr($filestr){return strrchr($filestr,'.');}// 函数3;function strstrtuue($filestr){return strrev(strstr(strrev($filestr),'.',TRUE));}// 函数4;function strayy($filestr){return end(explode('.',$filestr));   // 同 array_pop(explode('.',$filestr));//使用数组最后一个元素,还可以用count()-1// $arr = (explode('.',$filestr));// return $arr[count($arr)-1];}// 函数5;function strtokarr($filestr){$tokarr = array();$tok = strtok($filestr,'.');while($tok !== false){$tokarr[] = $tok;$tok = strtok('.');}return $tokarr[count($tokarr)-1];    }// 函数6;function strsplit($filestr){$strrev = strrev($filestr);$weizhi = strpos($strrev,'.');$arr = str_split($strrev,$weizhi);return strrev($arr[0]);}// 函数7;function strposoffset($filestr){$count = substr_count($filestr,'.');        // 得出'.'在字符串中出现了几次;$lens = strlen('.');                        // 得出'.'(子字符串)的长度; for($i =0;$i<$count;$i++){    $weizhi = strpos($filestr,'.');        // 逐个找出'.'在字符串中的位置;$statr = $weizhi + $lens;              // 子字符串的起始位置;$filestr = substr($filestr,$statr);    // 除去第一个标记('.')后的子字符串;}    return $filestr;}// 函数8;// 思路和函数7类似,都是通过循环,找到'.'的位置,然后截取(舍去前一个点的部分),利用子字符串再次查找截取;function possubstr($filestr){$sublen = strlen('.');   // '.'(子字符串)的长度;while(strpos($filestr,'.')!==false){                                     $weizhi = strpos($filestr,'.');$start = $weizhi + $sublen;$filestr = substr($filestr,$start);  }return $filestr;}// 函数9;  //  循环逐个字符的截取,直到找到'.';function subpos($filestr){$length = strlen($filestr);for($i=$length-1;$i>=0;$i--){              // 从最右边(后面)开始;if(substr($filestr,$i,1)=='.'){        // 找出右边开始'.'($i)的位置(值);$str = substr($filestr,$i);break;                             // 找到第一个就结束,跳出整个循环,不然还有往前找其他的'.';}}return $str;}// 函数10;//  循环先找到第一个'.'的位置,然后偏移后再次寻找;function posoffset($filestr){$offset = 0;$sublen = strlen('.');while(strpos($filestr,'.',$offset)!==false){$weizhi = strpos($filestr,'.',$offset);$offset = $weizhi + $sublen;}return substr($filestr,$offset);}// 函数11;function filefun($filestr) {    $p = pathinfo($filestr);    return $p['extension'];   }


// 1、由于系统字符串反转函数strrev()函数,只能对acII字符集的字符(字节)进行反转;// 2、自写一个包含其他字符的字符串反转函数;// 3、假设为unicode字符集,utf编码;$aaa = 'ghj我のサービ是一スです个中分gfdfhdgh';// 函数1;function utf8srerev($aaa){if(!is_string($aaa)){return 'no string';}$lengths = strlen($aaa);        // 字节长度;$start = 0;                     // 从哪个字节开始截取;$count = 0;                     // 截取几个字节代表一个字符;$arr =array();                  // 将截取的每个字符,一次存在数组中;$res = '';    while($start<$lengths){$highbin = decbin(ord(substr($aaa,$start,1)));           // 字符中的高字节二进制;if(strlen($highbin)<8){$count =1;}else if(substr($highbin,0,3) == '110'){$count =2;}else if(substr($highbin,0,4) == '1110'){$count =3;}else if(substr($highbin,0,5) == '11110'){$count =4;}else if(substr($highbin,0,6) == '111110'){$count =5;}else if(substr($highbin,0,7) == '1111110'){$count =6;}$arr[] = substr($aaa,$start,$count);$start = $start +$count;}$arrgeshu = count($arr);    //数组元素个数,即:不同类型(中、繁体、英文..)字符数;  // 也可以用每次截取的字符数++,来取得得出的个数;for($i = $arrgeshu-1;$i>=0;$i--){$res .= $arr[$i];}return $res;}//函数2;function strrevutf8($aaa){$lengths = strlen($aaa);$zifu = array();for($i=0;$i<$lengths;){$highbit = decbin(ord(substr($aaa,$i,1)));             // 每个字符的高字节二进制表示;if(strlen($highbit)<8){$zifu[]= $aaa[$i];$i++;}else if(substr($highbit,0,3)=='110'){$zifu[] = $aaa[$i].$aaa[$i+1];$i += 2;}else if(substr($highbit,0,4)=='1110'){$zifu[] = $aaa[$i].$aaa[$i+1].$aaa[$i+2];$i += 3;}else if(substr($highbit,0,5)=='11110'){$zifu[] = $aaa[$i].$aaa[$i+1].$aaa[$i+2].$aaa[$i+3];$i += 4;}else{            //  最后一个判断(else),不需要再加条件判断了;$zifu[] = $aaa[$i].$aaa[$i+1].$aaa[$i+2].$aaa[$i+3].$aaa[$i+4];$i += 5;}}return implode(array_reverse($zifu));    // 数组先反转、再链接成字符串;}// 函数3:  系统自带函数; 两个对字符进行运行的mb_函数function mb_strrevutf8($aaa){$len = mb_strlen($aaa,'utf8');            // utf8编码下 字符 的个数;$res = '';                                // 反转后结果字符串;for($i=1;$i<=$len;$i++){$res .= mb_substr($aaa,-$i,1,'utf8'); }return $res;}


原创粉丝点击