你有没有在开发微信小程序的时候用到wepy,而用less写css的时候使用到calc的时候计算有问题。怎么回事?

对于前端er来说,Less或Sass已经是一项必备的基本技能,有了这个利器,可以省下前端开发者的很多编码时间,让你写CSS如行云流水一般,然后最近我在Less里加入calc时确发现了有点问题,我在Less中这么写:

div {width : calc(100% - 30px);}

  结果Less把这个当成运算式去执行了,结果给我解析成这样:

div {width: calc(70%);}

是由于less的计算方式跟calc方法有重叠,两者在一起有冲突,于是,我在Less中把calc的写法改写成下面这样:
 

div {width : calc(~"100% - 30px");}

  然而,把30px替换为一个变量的正确写法(不然其他如 grunt-less Webstorm 等工具又会报错):

  div {
  @diff : 30px;
  width : calc(~"100% - @{diff}");
  }

首先xls是网上一个系统下载的数据文件,直接上传处理后出现红点问题。那么就想保存成xlsx试试,结果不让上传了。

ceckobecko/spreadsheet-reader 只允许上传xls文件,当上传xlsx文件时无法正确读取文件,并报 file not readable错误。

我们首先来解决不能上传xlsx文件的问题:

检查代码114行左右返回了error = 1 导致后面的代码报出上述错误,实际上并非文件没有读取权限:

if (substr($this->data, 0, 8) != IDENTIFIER_OLE) {
            $this->error = 1;
            return false;
           }

这里data:

$this->data = @file_get_contents($sFileName);

IDENTIFIER_OLE:

define('IDENTIFIER_OLE', pack("CCCCCCCC",0xd0,0xcf,0x11,0xe0,0xa1,0xb1,0x1a,0xe1));

那么我们把0-8个字符转成16进制看看是什么内容吧:

        for ($a = substr($this->data, 0, 8), $i=0; $i<8; $i++) {
            $hex = dechex(ord($a[$i]));
            var_dump($hex);
        }

输出:

string(2) "50"
string(2) "4b"
string(1) "3"
string(1) "4"
string(2) "14"
string(1) "0"
string(1) "6"
string(1) "0"

我们把这些16进制再打包成二进制,再与原来的字符串判断是否相等:

define('TTTTTTTTTTTTTTTT', pack('CCCCCCCC', 0x50, 0x4b, 0x03, 0x04, 0x14, 0x00, 0x06, 0x00));
var_dump(substr($this->data, 0, 8) == TTTTTTTTTTTTTTTT);

这里就会输出 bool(true) 了

那么我们在判断文件类型的时候还应该多加一个判断就可以上传xlsx文件了,如下:

define('TTTTTTTTTTTTTTTT', pack('CCCCCCCC', 0x50, 0x4b, 0x03, 0x04, 0x14, 0x00, 0x06, 0x00));
if (substr($this->data, 0, 8) != IDENTIFIER_OLE && substr($this->data, 0, 8) != TTTTTTTTTTTTTTTT) {
            $this->error = 1;
            return false;
           }

然后再试试上传,现在报500服务器内部错误了,而且处理时间明显加长了

后来发现用excel打开文件,直接按下ctrl+s保存一下,再上传就没有红点问题了,哎

算了还是保存为xls吧,以后有时间再看,抱歉!!!

以上只作本人的学习记录

<?php
class Test{ 
    /**
    *字符串转十六进制函数
    *@pream string $str='abc';
    */
    public function strToHex($str){ 
        $hex="";
        for($i=0;$i<strlen($str);$i++)
        $hex.=dechex(ord($str[$i]));
        $hex=strtoupper($hex);
        return $hex;
    }   
     
    /**
    *十六进制转字符串函数
    *@pream string $hex='616263';
    */ 
    public function hexToStr($hex){   
        $str=""; 
        for($i=0;$i<strlen($hex)-1;$i+=2)
        $str.=chr(hexdec($hex[$i].$hex[$i+1]));
        return  $str;
    } 
}
 <span style="white-space:pre">    </span>//测试Demo效果
    $test = new Test();
    $str = '要加密的内容sxfenglei';
    $data = $test->strToHex($str); 
    echo '加密内容:要加密的内容sxfenglei <br>'.$data.'<hr>';  
 
    $output = $test->hexToStr($data);
    echo '解密内容:E8A681E58AA0E5AF86E79A84E58685E5AEB9737866656E676C6569 <br>'.$output;  
?>

打开 https://qun.qq.com/member.html#gid=xxxxxxx
xxxx就是群号码,首先你要加入这个群,然后进入这个网页,登录之后可以看到群成员

如果人很多的话,需要一直按住end键,等成员全部加载完成

然后 ctrl+A 键全选整个网页,ctrl+C复制文字

然后将文件放到可以用正规表达式替换的文件编辑工具,比如 sublime text

然后用正规替换,规则如下:

[\s\S]*?(\d{7,20})[\s\S]*?\n

替换成

$1@qq.com\n

有什么地方不太清楚的留言吧,我尽量补充