PHP 使用 fgetcsv 读取 csv 文件内容中文乱码

使用 php 自带的 fgetcsv 读取 csv 文件内容,出现乱码。这是因为 csv 文件内容格式不是 utf 的,所以在读取和写入数据库时就会出现乱码,可以用 iconv 函数转换解决。修复后的 demo 如下(laravel 获取文件):$file = Input::file('xls_file_name'); $fp = fopen($file->getRealPath(), 'r

empty 与 isset 判断一个变量(数组下标)是否为空

在我的印象中只有 isset 可以判断一个变量是否设置,empty 去判断一个变量是否为空。并且,如果是数组下标未定义的变量,empty 判断还是会报错的。之后遇到反驳,说效果都一样,他测试过。测试环境是 laravel 5.2 + php 7.1 的 production 环境,确实没有报错,甚至修改成 development 开发模式,打开 app_debug,依然不会报错。想起之前开发过的项

laravel 路由注入的模型对象为空,获取不到数据

框架版本 : laravel 5.2问题描述需要对已存在的模型额外做一个添加筛选条件的列表,将之前的控制器、路由以及涉及到路由跳转的模型都复制了一份。# 用户管理 Route::resource('user', 'UserController', ['except' => ['show']]); # 增加用户角色为代理商的路由 Route::resource('agent', 'AgentC

laravel DataTables 查询关键词匹配关联表字段

Laravel 的 DataTables 库 可以在与前端简单交互,快速构建后台列表页面,包括所有字段的查询、排序等功能。这边因为刚接触这个 DataTables 库,只知道简单的格式化使用,在遇见需要查询关联表的字段时遇到了困难。正常的调用(摘自 github readme 示例):return datatables()->of(User::query())->toJson();,现

Laravel 解决 ajax 跨域问题 2 - 带头(Authorization)跨域

之前整理过 Laravel 通过中间件解决 ajax 跨域问题 教程,但最近开发一个公众号领红包的小功能依然翻了车。当前的允许跨域中间件 AccessControlAllowOrigin.php /** * @param $request * @param Closure $next * @return mixed * @throws ApiExcep

laravel paginate() 与 makeHidden() 一起使用

模型里使用了关联对象做计算并得到 append 属性,所以默认情况下,对象会自动携带关联对象。主要有两个问题:大部分时候使用模型真的只是想取一个简单的列表即便需要 append 属性,但关联对象本身或者关联对象的关联对象并不需要返回增加的属性默认是取不到的,需要添加到 append 中来来返回。而当增加属性不需要时,可以使用到 makeHidden() 主动隐藏掉。对应的还有 hidden 以及

vsprintf 报错:Too few arguments

$format_str = vsprintf($str, $values);vsprintf 输出格式化的字符串,$str 中会填充 %d、%s 等占位符。当后面的数据部分少于占位符个数时,就会报这个错误。可以将 $str 和 $values 输出出来,对比就能找到错误原因。也可以在函数前面加一个 @ 来忽略这个报错。

Laravel 获取请求头部信息及 JSON 格式数据

使用版本 Laravel 5.2获取头部信息$request->header('authorization')直接使用 $request->header() 获取所有参数,但每个参数值都是数组格式 ['xxx']。获取 JSON 格式数据$request->input()相当于 $data = file_get_content('php://input') + json_deco

PHP 错误:openssl_decrypt() expects at most 5 parameters, 7 given

微信支付分使用 apiv3 key 进行解密,报错:openssl_decrypt() expects at most 5 parameters, 7 given。点开函数所在库,是存在 7 个参数的。搜索 openssl_decrypt() 定义,其中更新日志中,说明了 php 7.1.0 添加了 tag 和 aad 参数,即 php 7.1 之后增加了两个参数,php 7.1 以下的版本时不能

Laravel JWT token 过期时长设置

laravel 5.2 版本修改 JWT 配置文件:config/jwt.php... 'ttl' => env('JWT_TTL', 60), ...单位为分钟,默认为 1 小时。设置为 null 后可以保持 token 永不过期。设置方法首先要确定 .env 文件里是否定义了常量 JWT_TTL,若未定义可以直接修改,比如 60*24 ,24 小时有效;若定义了,则修改 .env 里面的