模拟快3开奖程序
在用到less的项目中 原CSS3中的方法 calc 计算错误的问题解决方法
你有没有在开发微信小程序的时候用到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}");
} 使用 ceckobecko/spreadsheet-reader 出现红点乱码的研究
首先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 字符串和十六进制互转
<?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;
?>