个人常用自定义php函数

一、显示提示信息并跳转

/**
	* 函数名称	:show_msg
	* 作用		:【私有】显示提示信息
	* @param	: char $message 提示信息
	* @param	: char $url 跳转地址
	* @author	: dingling 
	* @version	: 0.01
	* @date		: 2015/12/30
	*/
	private function show_msg($message,$url){
		$str = '';
		$str.="";
		echo $str;
		if(!isset($url)) $url=$_SERVER["HTTP_REFERER"];
		$str2='';
		$str2.="";
		echo $str2;
		exit;
	}

二、导出日志文件

/**
	* 函数名称	:logFile
	* 作用		:【私有】写日志
	* @parm1	: 日志文件名称
	* @parm2	: 记录的信息
	* @version	: 0.01
	* @date		: 2015/12/7
	*/
	private function logFile($filename,$msg){
		$fd = fopen($filename,"a");
		//$str = "[".date("Y/m/d h:i:s",time())."]".$msg;
		fwrite($fd, $msg."\n");
		fclose($fd);
	}

三、将一维数组中的元素按照另一个一维数组中指定个数分布拆分成二维数组

/**
	* 函数名称	:yiweiToErwei
	* 作用		:【私有】将一维数组中的元素按照另一个一维数组中指定个数分布拆分成二维数组
	* @parm1	: 一维数组,要被拆分的数组
	* @parm2	: 一维数组,拆分的规则
	* @param3	:拆分后的数组规定的字段长度
	*/
function yiweiToErwei($arr1,$arr2,$max_col_num){
	if(!is_array($arr1)||!is_array($arr2)){
		return false;
	}
	foreach($arr2 as $k=>$v){
		if(!is_int($v))
			return false;
	}
	
	foreach($arr2 as $k=>$v){
		foreach($arr1 as $key=>$val){
			if($key<$v)
				$temp[] = $val;	
		}
		$arr1 = array_values(array_diff($arr1,$temp));
		$head[] = $temp;
		unset($temp);
	}
	//补空
	foreach($head as $k=>$v){
		if(count($head[$k])<$max_col_num){
			for($i=0;$i<$max_col_num-count($head[$k]);$i++){
				$temp[] = '';
			}
			if($k==0)
				$head2[] = array_merge($head[$k],$temp);
			else
				$head2[] = array_merge($temp,$head[$k]);
		}elseif(count($head[$k])==$max_col_num||count($head[$k])>$max_col_num){
			$head2[] = $head[$k];
		}
		unset($temp);	
	}
	return $head2;
}
$arr1 = array(1,2,3,4,5,6,7,8,9,10);
$arr2 = array(5,3,2);
$return_data = yiweiToErwei($arr1,$arr2,5);
echo '
';var_dump($return_data);
四、将一维数组按照固定长拆分成二维数组

/**
	* 函数名称	:yiweiToErwei2
	* 作用		:【私有】将一维数组按照固定长拆分成二维数组
	* @parm1	: 一维数组,要被拆分的数组
	* @parm2	: 固定长度
	*/
	function yiweiToErwei2($arr1,$max_col_num){
		foreach($arr1 as $k=>$v){
			$data[$k/$max_col_num][$k%$max_col_num] = $v;
		}
		return $data;
	}
$return_data = yiweiToErwei2($arr1,5);


五、字符串替换(将一段字符串中相同的字符替换成有规律的字符)

比如将

  • 替换成
  • 1
  • 2
  • 3
  • 、...

    效果就是个人常用自定义php函数_第1张图片  个人常用自定义php函数_第2张图片

    $temp = str_ireplace('class="left_2"','class="module-r"',$temp);
    		$temp = str_ireplace('','
    ',$temp); $temp = str_ireplace('','
    ',$temp); $temp = str_ireplace('
      ','
        ',$temp); $num1 = strpos($temp,'
      • '); $temp = substr_replace($temp,'
      • 1',$num1,4); $num2 = strpos($temp,'
      • ',$num1+4); $temp = substr_replace($temp,'
      • 2',$num2,4); $num3 = strpos($temp,'
      • ',$num2+4); $temp = substr_replace($temp,'
      • 3',$num3,4); for($i = 3 ; $i < 10; $i++){ $m = 'num'.$i; $j = $i+1; $n = 'num'.$j; $$n = strpos($temp,'
      • ',$$m+4); $temp = substr_replace($temp,'
      • ',$$n,4); }


    六、截取字符串

    /* 截取一定长度的完整的中文字符 */
    function cnsubstr($str,$strlen=10,$en=false) {
    	if(empty($str)||!is_numeric($strlen)){
    		return false;
    	}
    	if ($en) {
    		//如果出现3个英文字母就少一个字符  add by dingxf
    		$mt = preg_match_all('#[A-Zmw]#',substr($str,0,$strlen),$match);
    		$strlen = $strlen - floor($mt/2.8);
    	}
    
    	if(strlen($str)<=$strlen){
    		return $str;
    	}
    	//得到第$length个字符 并判断是否为非中文 若为非中文
    	//直接返回$length长的字符串
    	$last_word_needed=substr($str,$strlen-1,1);
    	if(!ord($last_word_needed)>128){
    		$needed_sub_sentence=substr($str,0,$strlen);
    	}else{
    		for($i=0;$i<$strlen;$i++){
    			if(ord($str[$i])>128){
    				$i++;
    			}
    		}//end of for
    		$needed_sub_sentence=substr($str,0,$i);
    	}
    	return $needed_sub_sentence;
    }

    七、
    获取指定目录下特定文件名的列表


    /**
         * 获取毫秒数
         */
    	public static function getMillisecond() {
    		list($t1, $t2) = explode(' ', microtime());
    		return (int)sprintf('%.0f',(floatval($t1)+floatval($t2))*1000);
    	}
    	
    	/**
         * 生成随机字符串
         */
    	 public static function generateStr($length = 16) {  
    		$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; 
    		$str = ''; 
    		for( $i = 0; $i < $length; $i++ ) { 
    			$str .= $chars[ mt_rand(0, strlen($chars) - 1) ]; 
    		} 
    		return $str; 
    	} 

     filesize($file2) ? filesize($file1) : filesize($file2);
    $j=1;
    for($i = 0 ; $i < $size ; $i++){
    	$content1 = fread($handle1 , 1);
    	$content2 = fread($handle2 , 1);
    	if(asc2bin($content1) != asc2bin($content2)){
    		logFile('/home/ding/compare2' ,$content1 . '@' .$content2);
    		$j++;
    	}
    	fseek($handle1, $i);
    	fseek($handle2, $i);
    }
    
    fclose($handle1);
    fclose($handle2);
    echo $j;

    下载文件

    public static function downloadScel($url,$name){
    		$file = fopen($url, "rb"); 
    		Header( "Content-type:   application/octet-stream "); 
    		Header( "Accept-Ranges:   bytes "); 
    		Header( "Content-Disposition:   attachment;   filename= {$name}"); 
    		$contents = "";
    		while (!feof($file)) {
    		  $contents .= fread($file, 8192);
    		}
    		$fd = fopen($name,"a");
    		fwrite($fd, $contents);
    		fclose($fd);
    		fclose($file); 
    	}


    过滤xml中特殊字符的函数  utf-8可用

    function wpjam_strip_control_characters($string){
         return preg_replace('/[\x00-\x1F\x7F-\x9F]/u', '', $string);
    }


    /**
     * 函数名:count_words
     * 功能说明:统计文章字数和图片数
     * 参数:文章内容字符串
     * 返回:array
     */
    function countWords($str){
        $str = trim($str);
        $wordCount = 0;
        $picCount = 0;
        $pattern = "/\[#img_[0-9]+_[a-z]*_[0-9]+_[a-zA-Z]*/i";
        #统计图片数
        preg_match_all($pattern, $str, $match_arrs);
        $picCount = count($match_arrs[0]);
        ##增加新的图片记数方式
        preg_match_all('/].+)>/iU","",$str);    ##去掉图片标签
        $str = str_replace(' ','',$str);               ##去掉空格
        $wordCount = strlen(trim(strip_tags($str)))/2;
        
        return array(
            'wordCount'=>$wordCount,
            'picCount'=>$picCount,
        );
    }

     
      
    ####将数据导出到csv文件
    if( !$rows ) { return false;}
    header('content-type:text/html; charset=gbk');
    $csvStr = "编号,频道id,频道名称,域名\r\n";
    $i=1;
    $icnt=count($rows);
    foreach ( $rows as $row ){
        $csvStr .= $i.','.implode(',',$row)."\r\n";
        $i++;
        unset($row);
    }
    echo $csvStr;
    $name = date('YmdHis');
    file_put_contents('./'.$name.'.csv', $csvStr);

    #二维数组中有N个元素,判断有N-1个元素相同,则认为他们相同,只保留一个,最后返回ID

    3,'simhash_16_int1'=>37120,'simhash_16_int2'=>5976,'simhash_16_int3'=>38,'simhash_16_int4'=>16384),
    	array('id'=>4,'simhash_16_int1'=>37120,'simhash_16_int2'=>5976,'simhash_16_int3'=>16678,'simhash_16_int4'=>16384),
    	array('id'=>6,'simhash_16_int1'=>37120,'simhash_16_int2'=>5976,'simhash_16_int3'=>294,'simhash_16_int4'=>16384),
    	array('id'=>1,'simhash_16_int1'=>38144,'simhash_16_int2'=>5960,'simhash_16_int3'=>38,'simhash_16_int4'=>16384),
    	array('id'=>2,'simhash_16_int1'=>38144,'simhash_16_int2'=>5976,'simhash_16_int3'=>16678,'simhash_16_int4'=>16384),
    	array('id'=>5,'simhash_16_int1'=>38144,'simhash_16_int2'=>5960,'simhash_16_int3'=>38,'simhash_16_int4'=>16384),	
    );
    function  filt($simhash16){
    	if(empty($simhash16)){
    		return false;
    	}
    	
    	#先将完全相同的过滤掉
    	$temp = array();
    	foreach($simhash16 as $k=>$v){
    		$temp[$v['id']] = $v['simhash_16_int1'].$v['simhash_16_int2'].$v['simhash_16_int3'].$v['simhash_16_int4'];
    	}
    	$temp = array_unique($temp);
    	$temp2 = array_keys($temp);
    	
    	$simhash16_2 = array();
    	foreach($simhash16 as $k=>$v){
    		if(in_array($v['id'] , $temp2)){
    			$simhash16_2[] = $v;
    		}
    	}
    	
    	$simhash16_2_num = count($simhash16_2);
    	#如果过滤完只有1个元素,则直接返回该元素的id
    	if($simhash16_2_num == 1){
    		return isset($simhash16_2[0]['id']) ? $simhash16_2[0]['id'] : false;
    	}
    	
    	$delete_id = array();
    	
    	for($i=0; $i<$simhash16_2_num; $i++){
    		foreach($simhash16_2 as $k=>$v){
    			$k2 = $k+1;
    			#最后一个元素不需要比较
    			if($k2 == $simhash16_2_num){
    				continue;
    			}
    			$equal_num = 0;
    			if($simhash16_2[$k]['simhash_16_int1'] == $simhash16_2[$k2]['simhash_16_int1']){
    				$equal_num++;
    			}
    			if($simhash16_2[$k]['simhash_16_int2'] == $simhash16_2[$k2]['simhash_16_int2']){
    				$equal_num++;
    			}
    			if($simhash16_2[$k]['simhash_16_int3'] == $simhash16_2[$k2]['simhash_16_int3']){
    				$equal_num++;
    			}
    			if($simhash16_2[$k]['simhash_16_int4'] == $simhash16_2[$k2]['simhash_16_int4']){
    				$equal_num++;
    			}
    			if($equal_num >= 3){
    				$delete_id[] = $simhash16_2[$k2]['id'];
    			}
    		}
    	}
    	$delete_id = array_unique($delete_id);
    	
    	$diff_id = array();
    	if(!empty($delete_id)){
    		foreach($simhash16_2 as $k=>$v){
    			if(in_array($v['id'] , $delete_id)){
    				unset($simhash16_2[$k]);
    			}else{
    				$diff_id[]= $v['id'];
    			}
    		}
    	}else{
    		foreach($simhash16_2 as $k=>$v){
    			$diff_id[]= $v['id'];
    		}
    	}
    	
    	return $diff_id;
    }
    


  • 你可能感兴趣的:(php)