PHP函数filter_var存在兼容性问题

最近在实现业务功能时,代码在发布到预发布环境后一直抛出异常,看了下源码发现是 filter_var 函数存在兼容性问题。如下分析:

filter_var() 函数通过指定的过滤器过滤一个变量,使用 filter_var($host, FILTER_VALIDATE_URL) 验证是否合法的URL

演示代码

<?php
$host = "http://www.badu.com?r=f/e";
$a = filter_var($host, FILTER_VALIDATE_URL);
var_export($a);

当 PHP 版是 5.5 时,一直返回 false;当 PHP 版本为 5.6 时,一直返回 $host 的值。

实际是 r=f/e 格式的参数处理有差异

解决方案:

1、因为用的是yii2 框架,r=f/e 参数格式其实是接口路由,改为 restful 的接口路由格式 $host = "[http://www.badu.com/f/e](https://link.zhihu.com/?target=http%3A//www.badu.com/f/e)"; (不影响上线的最快处理方案,采用该方案)

2、使用正则

备注:奇怪的是网上竟然没有找到该类问题的相关话题,是没有人遇到过吗?

本作品采用《CC 协议》,转载必须注明作者和本文链接
雪花飘
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!