标签存档: function

PHP函数 fgetcsv 中文问题

今天使用fgetcsv,打开上传的CSV文件后,发现文件列中包含中文的都为空。

解决方案:
// utf-8
setlocale(LC_ALL, ‘en_US.UTF-8′);
// 简体
setlocale(LC_ALL, ‘zh_CN’);

以下是常用的地区标识:
zh_CN GB2312
en_US.UTF-8 UTF-8
zh_TW BIG5
zh_HK BIG5-HKSCS
zh_TW.EUC-TW EUC-TW
zh_TW.UTF-8 UTF-8
zh_HK.UTF-8 UTF-8
zh_CN.GBK GBK

例子:

setlocale(LC_ALL, 'zh_CN.GBK');

$goods_csv=$_FILES['goods_info']['tmp_name']; //CSV编码为ANSI

$file = fopen($goods_csv,'r');

while ($data = fgetcsv($file)) {
    $goods_list[] = $data;
}

foreach($goods_list as $key=>$value){
    foreach($value as $k=>$v){
        //由于PHP文件编码是UTF-8,把GBK转码成UTF-8
        $goods_list[$key][$k] = mb_convert_encoding($v, "UTF-8", "GBK");
    }
}
print_r($goods_list);

fclose($file);

PHP 获取文件大小

//获取文件大小
function getFileSize($url){
    $url = parse_url($url);
    if($fp = @fsockopen($url['host'],empty($url['port'])?80:$url['port'],$error)){
          fputs($fp,"GET ".(empty($url['path'])?'/':$url['path'])." HTTP/1.1\r\n");
          fputs($fp,"Host:$url[host]\r\n\r\n");
          while(!feof($fp)){
                $tmp = fgets($fp);
                if(trim($tmp) == ''){
                    break;
                }else if(preg_match('/Content-Length:(.*)/si',$tmp,$arr)){
                    //正则表达式i:大小写; s:忽略无意义符号:空格,换行及全角XX;
                    return trim($arr[1]);
                }
          }
          return null;
    }else{
          return null;
    }
}

有趣的三个php函数(&字符的引用调用)

&运算符置于函数name前,调用它返回函数的引用,而函数本身即$functionname不会在内存中消失
它和变量是一致的~

//第一个:
function   &strAppOne()   {
static   $v   =   0;
$v++;
echo   $v.nl2br("\n");
return   $v;
}
strAppOne();
$b   =&   strAppOne();
$b   +=   10;
strAppOne();

//第二个:
function   &strAppTwo()   {
static   $v   =   0;
$v++;
echo   $v.nl2br("\n");
return   $v;
}
strAppTwo();
$b   =   strAppTwo();
$b   +=   10;
strAppTwo();

//第三个:
function   strAppThree()   {
static   $v   =   0;
$v++;
echo   $v.nl2br("\n");
return   $v;
}
strAppThree();
$b  =  & strAppThree();
$b   +=   10;
strAppThree();
第 1 页,共 1 页1