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;}
阅读全文
0 0
- php字符串函数相关试题场景
- PHP字符串相关函数
- PHP字符串处理相关函数
- php字符串处理相关函数
- PHP 常用字符串相关函数
- PHP 常用字符串相关函数
- [整理]php常用函数及运用场景----字符串函数str
- php字符串操作相关的函数
- PHP面试题——PHP字符串翻转函数
- 字符串相关面试题
- 字符串相关面试题
- 字符串相关面试题
- php相关面试题
- php学习笔记(五)字符串及其相关处理函数
- php复习 第六天 字符串操作相关函数
- 3.PHP条件语句及其字符串相关函数
- 回炉重造,第十话:php字符串相关函数
- PHP-字符串相关操作
- response乱码 response.setCharacterEncoding("UTF-8")不生效的原因及解决方法
- Linux网络编程二
- JWASM x64语法
- ssh学习总结
- ucos ii 软件定时器,delay函数
- php字符串函数相关试题场景
- 学习笔记:C++ 函数重载
- bug排坑记录
- CC2541 软件I2C
- SAP固定资产的几个关键日期
- Planet: Understanding the Amazon from Space 获奖者心得
- 多任务学习“Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics”
- [Windows]_[系统内部版本号对照表]
- OpenSessionInViewFilter源码分析