分类 php 下的文章

如下代码,结果的精度会不正确.

echo json_encode(0.6);//结果0.59999999999999998

出现这种情况,是因为json_encode行为受到了php.ini中serialize_precision配置的影响,看网上是说将这个值调成小等于16会正常.其实将其设成-1是个更好的选择,-1表示php根据精度自动调整. 所以解决方案就是要么直接改php.ini中的serialize_precision; 或者你没权限或不想更改这个配置, 那么使用如下代码:

ini_set('serialize_precision', -1);
echo json_decode(0.6);//结果0.6, 正常

在php中,我们使用preg_match函数做正式匹配, 默认匹配是单行模式, 有时候我们希望能匹配多行.那么我们需要做的就是在正则规则后加上/s修饰符. 举个例子就是

preg_math('/abc/', $str) 变为 preg_math('/abc/s', $str)

/s修饰符作用在官方解释中为: 默认的,没有这个加/s,那么.符号会匹配所有字符除换行符之外. 而如果加上/s, 那么
.会匹配所有任意字符,包括换行

更多修饰符,见官网描述: https://www.php.net/manual/en/reference.pcre.pattern.modifiers.php

首先,L904的含义,我们应该清楚,这样有助于我们更快定位问题.这个含义表示的是L9列,04行有问题.
其次,formula error说明, 你在这个单元格中使用了公式, 而这个公式是不合法的.所以你应该检测下公式的格式.
可能你会觉得自己并没有使用公式.但是只要你的内容是以=开头,那么导出时会认为这个单元格内容是个公式,博主就是这种情况触发的这个错误.所以导出的内容还是需要做下过滤的,不能以=开头.就像我们平时使用excel一样,如果使用了=开头, 那么=后面期望跟的就是一个公式,若是其他内容将会产生错误.