做了那么多PHP项目,有几个函数每次用的时候都要百度一下,特别麻烦,我一直记不住。为此,我记录一下,下次我就直接在我自己的博客找方便多了。
字符串截取 substr
语法
substr(string,start,length)
参数 | 描述 |
---|---|
string | 必需。规定要返回其中一部分的字符串。 |
start | 必需。规定在字符串的何处开始。
|
length | 可选。规定被返回字符串的长度。默认是直到字符串的结尾。
|
<?php echo substr("Hello world",6); ?>
上面的截取中文会乱码!!!
高级自定义字符串截取 newstr 截取中文不会乱码!
/** 字符截断,中文算2个字符 **/ function newstr($string, $length, $dot="...") { if(strlen($string) <= $length) {return $string;} $string = str_replace(array('&', '"', '<', '>' ,' '), array('&','"','<','>',''), $string); $strcut = '';$n = $tn = $noc = $noct = $nc = $tnc =0; while($n < strlen($string)) { $t = ord($string[$n]); if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) { $tn = 1; $n++; $noct++; } elseif(194 <= $t && $t <= 223) { $tn = 2; $n += 2; $noct += 2; } elseif(224 <= $t && $t <= 239) { $tn = 3; $n += 3; $noct += 2; } elseif(240 <= $t && $t <= 247) { $tn = 4; $n += 4; $noct += 2; } elseif(248 <= $t && $t <= 251) { $tn = 5; $n += 5; $noct += 2; } elseif($t == 252 || $t == 253) { $tn = 6; $n += 6; $noct += 2; } else {$n++;} if($noct >= $length){if($noct==0)$noc=$noct;if($nc==0)$nc=$n;if($tnc==0)$tnc=$tn;} } if($noct<=$length){return str_replace(array('&','"','<','>'), array('&', '"', '<', '>'), $string);} if($noc > $length) {$nc -= $tnc;} $strcut = substr($string, 0, $nc); $strcut = str_replace(array('&','"','<','>'), array('&', '"', '<', '>'), $strcut); return $strcut.$dot; }
2. 数组去重 array_unique
语法
array_unique(array)
参数 | 描述 |
---|---|
array | 必需。规定数组。 |
sortingtype | 可选。规定如何比较数组元素/项目。可能的值:
|
<?php $a=array("a"=>"red","b"=>"green","c"=>"red"); print_r(array_unique($a)); ?>
3. 数字补零 str_pad sprintf
语法
str_pad(string,length,pad_string,pad_type)
参数 | 描述 |
---|---|
string | 必需。规定要填充的字符串。 |
length | 必需。规定新的字符串长度。如果该值小于字符串的原始长度,则不进行任何操作。 |
pad_string | 可选。规定供填充使用的字符串。默认是空白。 |
pad_type | 可选。规定填充字符串的哪边。 可能的值:
|
<?php #填充字符串的右侧,到 30 个字符的新长度: $str = "Hello World"; echo str_pad($str,30,"."); //输出:Hello World................... $num = '30'; echo str_pad($num,5,"0",STR_PAD_LEFT); //输出:00030 ?>
sprintf
# 用一个5位数的数字格式化后边的参数,如果不足5位就补零 echo sprintf("%05d",1); // 00001 # 用一个小数点后最少三位不足三位补零,小数点前最少一位,不足一位补零的浮点数格式化后边的参数 echo sprintf("%01.3f",1); // 1.000
4. 对数组进行key的升序降序 rsort sort
定义和用法
rsort() 函数对数值数组进行降序排序。
语法
rsort(array,sortingtype);
参数 | 描述 |
---|---|
array | 必需。规定要进行排序的数组。 |
sortingtype | 可选。规定如何比较数组的元素/项目。可能的值:
|
定义和用法
sort() 函数对索引数组进行升序排序。
注释:本函数为数组中的单元赋予新的键名。原有的键名将被删除。
如果成功则返回 TRUE,否则返回 FALSE。
语法
sort(array,sortingtype);
参数 | 描述 |
---|---|
array | 必需。规定要进行排序的数组。 |
sortingtype | 可选。规定如何比较数组的元素/项目。可能的值:
|
5. 输出文本的换行符 nl2br
定义和用法
nl2br() 函数在字符串中的每个新行(\n)之前插入 HTML 换行符(<br> 或 <br />)。
语法
nl2br(string,xhtml)
参数 | 描述 |
---|---|
string | 必需。规定要检查的字符串。 |
xhtml | 可选。布尔值,表示是否使用兼容 XHTML 换行:
|
6. 数组去除空值 array_filter( )
定义和用法
array_filter() 函数用回调函数过滤数组中的值。
该函数把输入数组中的每个键值传给回调函数。如果回调函数返回 true,则把输入数组中的当前键值返回结果数组中。数组键名保持不变。
语法
array_filter(array,callbackfunction);
参数 | 描述 |
---|---|
array | 必需。规定要过滤的数组。 |
callbackfunction | 必需。规定要使用的回调函数。 |
7. 隐藏手机号码中间4位
方法 1: function hidtel($phone){ $IsWhat = preg_match('/(0[0-9]{2,3}[\-]?[2-9][0-9]{6,7}[\-]?[0-9]?)/i',$phone); //固定电话 if($IsWhat == 1){ return preg_replace('/(0[0-9]{2,3}[\-]?[2-9])[0-9]{3,4}([0-9]{3}[\-]?[0-9]?)/i','$1****$2',$phone); }else{ return preg_replace('/(1[358]{1}[0-9])[0-9]{4}([0-9]{4})/i','$1****$2',$phone); } } 方法 2: $num = "13966778888" $str = substr_replace($num,'****',3,4);
8. array_pop 删除数组最后一个元素
定义和用法
array_pop() 函数删除数组中的最后一个元素。
语法
array_pop(array)
参数 | 描述 |
---|---|
array | 必需。规定数组。 |
$a=array("red","green","blue"); array_pop($a); print_r($a);
9. 计算内容字数
两个函数经常用到:mb_strlen 和 mb_strwidth
mb_strlen : 将中文英文都算作一个字符,如果真计算字数,那么用这个来计算。
mb_strwidth : 将中文算作2个字符,如果计算字节数,用这个来计算比较适合。
echo mb_strlen('这个字数','UTF-8'); echo mb_strwidth('这个字数','UTF-8');