标签 php 下的文章

处理手机上传的图片的时候, 遇到上传后的图片方向不对的问题,拍摄的时候是竖拍,但上传后照片横过来了。
了解到手机(包括安卓和iOS都是用exif的 Orientation值来标记陀螺仪的水平方向)

要实现在php中读取并修正图像的显示方向,就要用到exif_read_data() 。
查看过php_info 后确认现在的lnmp上并没有这个扩展,代码执行后报错

PHP Fatal error: Uncaught Error: Call to undefined function exif_read_data() in ...

windows的处理方法倒是比较简单
从php.ini 中去掉以下两行的注释

;extension=php_mbstring.dll
;extension=php_exif.dll

确保配置文件对应的 ext目录内有对应的 dll文件,然后重启http服务就好
linux下则相对复杂一点点,需要编译,下文为流水账





- 阅读剩余部分 -

短篇过一次手备忘。

需要在创建的xls文档增加多一页(Sheet)。

一开始在这个地方提示下标越界

$xls->setActiveSheetIndex(1);

由于官方附的samples内没有找到明确的范例,所以参考 PHPExcel.php 源码内方法修改

$sheet = $xls->createSheet();
$xls->addSheet($sheet);
$xls->setActiveSheetIndex(1);

这次报错

PHP Fatal error: Uncaught PHPExcel_Exception: Workbook already contains a worksheet named 'Worksheet'.
Rename this worksheet first.

感觉奇怪由于文档内并没有命名为Worksheet的页,查了源码设置 sheet name 在类里的方法对应是 setTitle(),可是手动重命名后仍报这个错误且注明的名称冲突为重命名的新名称。

不啰嗦废话了,结论是 createSheet() 之后不需要 addSheet() 修正后的写法

$sheet = $xls->createSheet(1);
$sheet->setTitle("第二页");

$sheet->setCellValue('A1','第一列标题'); 
//等同于 $xls->setActiveSheetIndex(1)->setCellValue('A1','标题1'); 

参考文: https://stackoverflow.com/questions/9850013/phpexcel-creating-multiple-sheets-by-iteration

以前项目做过几次,过一段时间就记不住了。

所以,要说现在技术面试什么手写代码根本是扯淡。

压缩


<?php
$file_path = "/path/to/file2.txt";
$zip = new ZipArchive;
if ($zip->open('test.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE) === TRUE) {
    $zip->addFile('/path/to/index.txt', 'newname.txt');
    $zip->addFile($file_path); //不用第二参数,直接把文件原本的目录结构打包进zip包
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}
?>

解压

$zip = new ZipArchive;
if ($zip->open('test.zip') === TRUE) {
    $zip->extractTo('/my/destination/dir/');
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}

文档: https://www.php.net/manual/en/class.ziparchive.php

够用主义,正则规则做得略微松散,不是非常非常非常严谨(知道有些特殊号段不存在)

/**
 * BASE::valid_phone()
 * 验证手机号有效性 (符合手机号码的组合规则)
 * @param string $phone
 * @return boolean $isPhone 
 */
function valid_phone($phone){
    $exp = "/^1[3-9]{1}[0-9]{9}$/";
    if(preg_match($exp,$phone)){
        return true;
    }else{
        $this->err = "请输入正确有效的手机号码";    
        return false;
    }
}