6
25
2009
0

[PHP]使用array_merge重新排列数组下标

用了一个array_unique去除了一个数组里面的重复,但是发现下标保留了原数组的下标

但是javascript使用for循环需要下标整齐,所以寻找重新排列数组下标的方法

array_merge可以解决这个问题

 

array_merge() 函数把两个或多个数组合并为一个数组。

如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的)。如果数组是数字索引的,则键名会以连续方式重新索引。

注释:如果仅仅向 array_merge() 函数输入了一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引。(参见例子 2)

语法

array_merge(array1,array2,array3...)
参数 描述
array1 必需。输入的第一个数组。
array2 必需。输入的第二个数组。
array3 可选。可指定的多个输入数组。

例子 1

<?php
$a1=array("a"=>"Horse","b"=>"Dog");
$a2=array("c"=>"Cow","b"=>"Cat");
print_r(array_merge($a1,$a2));
?>

输出:

Array ( [a] => Horse [b] => Cat [c] => Cow )

例子 2

仅使用一个数组参数:

<?php
$a=array(3=>"Horse",4=>"Dog");
print_r(array_merge($a));
?>

输出:

Array ( [0] => Horse [1] => Dog )
Category: PHP | Tags: php 数组 下标重新排列
8
16
2008
1

[PHP]图片缩放转换方法

 

function coverImg($source,$target,$targetWidth,$targetHeight){
        $system=explode(".",$source);
       
        if (preg_match("/jpg|jpeg/",$system[count($system)-1])){
                $src_img=imagecreatefromjpeg($source);
        }
        if (preg_match("/png/",$system[count($system)-1])){
                $src_img=imagecreatefrompng($source);
        }
        $old_x=imageSX($src_img);
        $old_y=imageSY($src_img);
        if ($old_x > $old_y) {  //图片宽度大于高度
                $thumb_h = $old_y*($targetWidth/$old_x);
                $thumb_w = $targetWidth;
                //$thumb_h=$targetHeight;
                //$thumb_w=$old_x*($targetHeight/$old_y);
        }
        if ($old_x < $old_y) { //图片高度大于宽度
                $thumb_w = $old_x*($targetHeight/$old_y);
                $thumb_h = $targetHeight;
               
                //$thumb_h=$old_y*($targetWidth/$old_x);
                //$thumb_w=$targetWidth;
        }
        if ($old_x == $old_y) {
                $thumb_w=$targetWidth;
                $thumb_h=$targetHeight;
        }
       
        $dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
       
        imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y);
       
        imagejpeg($dst_img,$target);
        imagedestroy($dst_img);
        imagedestroy($src_img);
        return true;
}

写的比较简单,可以将上传的图片转换为jpg格式,并且可以控制最大宽度和最大高度

Category: PHP | Tags:
8
5
2008
0

[HTML][PHP][转]多文件上传

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>上传一组文件</title>
</head>

<body>
<form action="" method="post" enctype="multipart/form-data">
<p>同时上传多个文件:<br />
<input type="file" name="userfile[]" /><br />
<input type="file" name="userfile[]" /><br />
<input type="file" name="userfile[]" /><br />
<input type="submit" value="上传" />
</p>
</form>
</body>
</html>
 

 

<?php
$root_dir=str_replace("\\", '/', dirname(__FILE__));
//$root_dz=str_replace("\\", '/', substr(dirname(__FILE__), 0, -8));
//如本文件不在站点根目录可用上行替换第一行,根据情况修改后面的数字8即可.
//例如本文件在“/home/web/include”文件夹中,而站点根目录是“/home/web”,数字8表示“/include”有8个字符.
$uploaddir = $root_dir."/";//设置上传目录
$f_type=strtolower("jpg,jpeg,gif,png,swf,bmp,txt,rar,zip,doc");//设置可上传的文件类型
$file_size_max=100*1024;//限制单个文件上传最大容量
$overwrite = 1;//是否允许覆盖相同文件,1:允许,0:不允许
$f_input="userfile";//设置上传域名称

if($_FILES[$f_input]){
    foreach($_FILES[$f_input]["error"] as $key => $error){
        $up_error="no";
        if ($error == UPLOAD_ERR_OK){
            $f_name=$_FILES[$f_input]['name'][$key];//获取上传源文件名
            $uploadfile=$uploaddir.strtolower(basename($f_name));
             
            $tmp_type=substr(strrchr($f_name,"."),1);//获取文件扩展名
            if(!strstr($f_type,$tmp_type)){
                echo "对不起,不能上传".$tmp_type."格式文件, ".$f_name." 文件上传失败!<br />";
                $up_error="yes";
            }
             
            if ($_FILES[$f_input]['size'][$key]>$file_size_max) {
                echo "对不起,你上传的文件 ".$f_name." 容量为".round($_FILES[$f_input]['size'][$key]/1024)."Kb,大于规定的".($file_size_max/1024)."Kb,上传失败!<br />";
                $up_error="yes";
            }
             
            if (file_exists($uploadfile)&&!$overwrite){
                echo "对不起,文件 ".$f_name." 已经存在,上传失败!<br />";
                $up_error="yes";
            }
             
            //取消下两行的注释可用日期和时间自定义文件名
            //if(function_exists('date_default_timezone_set')){date_default_timezone_set('PRC');}//设置时区
            //$uploadfile=$uploaddir.date("YmdHis").$key.".".$tmp_type;
            if(($up_error!="yes") and (move_uploaded_file($_FILES[$f_input]['tmp_name'][$key], $uploadfile))){
                echo "文件 ".$f_name." 上传成功!<br />";
            }
        }
    }
}
?>
Category: PHP | Tags: html php 文件上传
8
1
2008
0

[转][PHP]一个比is_numeric更适合id判断的方法

is_numeric能判定一个变量是否为数字或数字字符串,但是它的判定范围太宽了。整数、小数、指数表示以及16进制数值都会通过判断。
平时判定id的时候,用它就有点不合适。今天发现一个新的判定函数:ctype_digit,它可以只判定整数,这样就比is_numeric好一些。

其他还有ctype_xdigit判定16进制整数,ctype_alpha判定字母等等函数。
参考PHP的ctype函数库

转至:桄欣  发表于2008年07月 23日 Wednesday 19:01 在 编辑部

Category: PHP | Tags: php
8
1
2008
1

[PHP]Ajax使用POST传值要注意的一个小问题

昨天在一个保存按钮的地方用到了Ajax

使用POST传值,在提交的时候执行页面怎么也接受不到传的值,用get却没有问题

最后发现问题出在setRequestHeader('Content-Type','utf-8');

必须设置成setRequestHeader('Content-Type','application/x-www-form-urlencoded');

这样才能接受到post的值

Category: PHP | Tags: ajax php
7
23
2008
0

[PHP]格式化html代码方法htmlentities和htmlspecialchars

用户编辑上传的文字往往会包含<>""&这样的代码,如果不在后台加以处理,往往会导致不少安全问题

php自带了htmlentities和htmlspecialchars这两个方法

htmlentities 可以把用户输入的所有文字全部格式化

string htmlentities ( string string [, int quote_style [, string charset]] )


第一个参数是要格式化的字符串

第二个参数有三种情况

ENT_COMPAT Will convert double-quotes and leave single-quotes alone.
ENT_QUOTES Will convert both double and single quotes.
ENT_NOQUOTES Will leave both double and single quotes unconverted.

     第一种会转换双引号不转换单引号
     第二种会同时转换单引号和双引号
     第三种会不转换单引号和双引号

第三个参数是设置编码格式

字符集 别名 描述
ISO-8859-1 ISO8859-1 西欧,Latin-1
ISO-8859-15 ISO8859-15 西欧,Latin-9。增加了 Latin-1(ISO-8859-1)中缺少的欧元符号、法国及芬兰字母。
UTF-8   ASCII 兼容多字节 8-bit Unicode。
cp866 ibm866, 866 DOS-特有的 Cyrillic 字母字符集。PHP 4.3.2 开始支持该字符集。
cp1251 Windows-1251, win-1251, 1251 Windows-特有的 Cyrillic 字母字符集。PHP 4.3.2 开始支持该字符集。
cp1252 Windows-1252, 1252 Windows 对于西欧特有的字符集。
KOI8-R koi8-ru, koi8r 俄文。PHP 4.3.2 开始支持该字符集。
BIG5 950 繁体中文,主要用于中国台湾。
GB2312 936 简体中文,国际标准字符集。
BIG5-HKSCS   繁体中文,Big5 的延伸,主要用于香港。
Shift_JIS SJIS, 932 日文。
EUC-JP EUCJP 日文。

 

下面是htmlspecialchars

string htmlspecialchars ( string string [, int quote_style [, string charset]] )
 

它的三个参数和htmlentities是一样的

它和htmlentities的区别就在于:

  • '&' (ampersand) becomes '&amp;'

  • '"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set.

  • ''' (single quote) becomes '&#039;' only when ENT_QUOTES is set.

  • '<' (less than) becomes '&lt;'

  • '>' (greater than) becomes '&gt;'

可以了解到htmlspecialchars只转化上面这几个html代码,而htmlentities却会转化所有的html代码,连同里面的它无法识别的中文字符也会转化出来。

Category: PHP | Tags: php 格式化html

Host by is-Programmer.com | Power by Chito 1.3.3 beta | Theme: Aeros 2.0 by TheBuckmaker.com