获取url中请求参数
function getQueryParams($url) { $data = parse_url($url); $params = array(); $queryArr = explode('&', $data['query']); $queryArr = array_filter($queryArr); foreach ($queryArr as $value) { list($key, $val) = explode('=', $value); $params[$key] = $val; } return $params; }
1.正则表达式大全
x80-xff 英文字符
if (preg_match("/[x7f-xff]/", $string)) {//兼容gb2312,utf-8
echo "有中文";
}else{
echo "没有中文";
}
2.字符串长度
$mb
= mb_strlen(
$str
,
'utf-8'
);
$st
=
strlen
(
$str
);
if
(
$st
==
$mb
)
return
'纯英文'
;
if
(
$st
%
$mb
==0 &&
$st
%3==0)
return
'纯汉字'
;
return
'汉英混合'
;
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
function cutstr($string, $length, $dot = ' ...') { if(strlen($string) <= $length) { return $string; } $pre = chr(1); $end = chr(1); $string = str_replace(array('&', '"', '<', '>'), array($pre.'&'.$end, $pre.'"'.$end, $pre.'<'.$end, $pre.'>'.$end), $string); $strcut = ''; if(strtolower(CHARSET) == 'utf-8') { $n = $tn = $noc = 0; while($n < strlen($string)) { $t = ord($string[$n]); if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) { $tn = 1; $n++; $noc++; } elseif(194 <= $t && $t <= 223) { $tn = 2; $n += 2; $noc += 2; } elseif(224 <= $t && $t <= 239) { $tn = 3; $n += 3; $noc += 2; } elseif(240 <= $t && $t <= 247) { $tn = 4; $n += 4; $noc += 2; } elseif(248 <= $t && $t <= 251) { $tn = 5; $n += 5; $noc += 2; } elseif($t == 252 || $t == 253) { $tn = 6; $n += 6; $noc += 2; } else { $n++; } if($noc >= $length) { break; } } if($noc > $length) { $n -= $tn; } $strcut = substr($string, 0, $n); } else { $_length = $length - 1; for($i = 0; $i < $length; $i++) { if(ord($string[$i]) <= 127) { $strcut .= $string[$i]; } else if($i < $_length) { $strcut .= $string[$i].$string[++$i]; } } } $strcut = str_replace(array($pre.'&'.$end, $pre.'"'.$end, $pre.'<'.$end, $pre.'>'.$end), array('&', '"', '<', '>'), $strcut); $pos = strrpos($strcut, chr(1)); if($pos !== false) { $strcut = substr($strcut,0,$pos); } return $strcut.$dot; }
中文字符转换为十六进制ascii码存储
不同编码请在不同编码环境下测试获取
$str = ':'; $len = strlen($str); $asci = array(); for($i=0; $i<$len; $i++) { $asci[] = '0x'. dechex(ord($str{$i})); } $res = ''; foreach($asci as $val){ $res = $res ? $res. '.chr('. $val .')' : 'chr('. $val .')'; } echo $res; echo " "; echo chr(0xef).chr(0xbc).chr(0x9a);
array_map 在一个PHP类中通过array_map函数回调内部方法又该如何做呢?
array array_map ( callback callback, array arr1 [, array ...] )
array_map() 返回一个数组,该数组包含了 arr1 中的所有单元经过 callback 作用过之后的单元。callback 接受的参数数目应该和传递给 array_map() 函数的数组数目一致。
静态方法
$return = array_map(array(__CLASS__, '_entities'), $arg);
非静态方法
$return = array_map(array($this, 'entities'), $arg);
1,在PHP类中通过array_map函数回调内部方法时,类名称可以使用__CLASS__常量。我们强烈推荐使用此常量,因为不论你类如何修改,这能保证最终结果都是正确的。
2,如果回调的方法是非静态类型,亦可通过$this伪变量指定。
3,在PHP类中的array_map函数总是不能识别self伪变量。
使用多个参数:
<?php function myfunction($v1,$v2) { if ($v1===$v2) { return "same"; } return "different"; } $a1=array("Horse","Dog","Cat"); $a2=array("Cow","Dog","Rat"); print_r(array_map("myfunction",$a1,$a2)); ?>
Extract新用法 - SQL语句
extract(DB::fetch_first("SELECT COUNT(*) AS threadcount, SUM(t.replies)+COUNT(*) AS replycount
FROM ".DB::table('forum_thread')." t, ".DB::table('forum_forum')." f
WHERE f.fid='$fid' AND t.fid=f.fid AND t.displayorder>='0'"));
extract导出变量,可以直接使用 $threadcount, $replycount
生成xml文档,<![CDATA[ content ]]> content 有效,安全过滤,可以正常解析的xml文档
public function XmlSafeStr($str, $cdata = true) { if (!is_string($str)) return $str; if ($cdata) { $str = str_replace(']]>', '', $str); } /* invalid chars * 0x00 - 0x08 * 0x0b - 0x0c * 0x0e - 0x1f */ $str = preg_replace('/[x00-x08x0b-x0cx0e-x1f]/', '', $str); return $str; }
百分比统计
$total = 2018673; $times = array( 1 => 1217169, 2 => 11529, 3 => 3279, 4 => 2279, 5 => 743, 6 => 314, 7 => 58, 8 => 31, 9 => 6, 10 => 2, 11 => 0, ); $tmpArr = array(); foreach($times as $num => $time) { echo 'L' . ($num-1) . " " . number_format(floor(($time * 10000000) /$total) * 0.00001, 5, '.', '') . '%'; echo PHP_EOL; $tmpArr[] = floor(($time * 1000) /$total) * 0.1; } echo array_sum($tmpArr);