PHP7.3.0+弃用FILTER_FLAG_SCHEME_REQUIRED的解决办法
private function prependMissingScheme($host) {
if (!filter_var($host, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED)) {
$host = 'http://' . $host;
}
return $host;
}
FILTER_FLAG_SCHEME_REQUIRED是干嘛用的呢?可以看一下FILTER_VALIDATE_URL,它也是一个过滤器,把值作为 URL 来验证,有以下几个标识:
- FILTER_FLAG_SCHEME_REQUIRED - 要求 URL 是 RFC 兼容 URL(比如 http://example)
- FILTER_FLAG_HOST_REQUIRED - 要求 URL 包含主机名(比如 http://www.example.com)
- FILTER_FLAG_PATH_REQUIRED - 要求 URL 在域名后存在路径(比如 www.example.com/example1/test2/)
- FILTER_FLAG_QUERY_REQUIRED - 要求 URL 存在查询字符串(比如 "example.php?name=Peter&age=37")
<?php
$url = 'http://username:password@hostname:9090/path?arg=value#anchor'; print_r(parse_url($url));
// Array ( [scheme] => http [host] => hostname [port] => 9090 [user] => username
[pass] => password [path] => /path [query] => arg=value [fragment] => anchor )
print_r(parse_url($url, PHP_URL_SCHEME)); // http
print_r(parse_url($url, PHP_URL_USER)); // username
print_r(parse_url($url, PHP_URL_PASS)); // password
print_r(parse_url($url, PHP_URL_HOST)); // hostname
print_r(parse_url($url, PHP_URL_PORT)); //
print_r(parse_url($url, PHP_URL_PATH)); // /path
print_r(parse_url($url, PHP_URL_QUERY)); // arg=value
print_r(parse_url($url, PHP_URL_FRAGMENT)); // anchor
所以可以用parse_url()函数配合 PHP_URL_SCHEME 验证即可。
private function prependMissingScheme($host){
// 也可以写成
// if (!isset(parse_url($host)['scheme'])) {
if (empty(parse_url($host, PHP_URL_SCHEME)) {
$host = 'http://' . $host;
}
return $host;
}
需要注意的是,parse_url()不能验证给定 URL 的合法性,只是将给定的 URL 分解为上面列出的各部分。不完整的 URL 也被接受,parse_url()会尝试尽量正确地将其解析。
PHP7.3.0+弃用FILTER_FLAG_SCHEME_REQUIRED的解决办法的更多相关文章
- Android权限管理之Android 6.0运行时权限及解决办法
前言: 今天还是围绕着最近面试的一个热门话题Android 6.0权限适配来总结学习,其实Android 6.0权限适配我们公司是在今年5月份才开始做,算是比较晚的吧,不过现在Android 6.0以 ...
- JavaScript中的ParseInt("08")和“09”返回0的原因分析及解决办法
今天在程序中出现一个bugger ,调试了好久,最后才发现,原来是这个问题. 做了一个实验: alert(parseInt("01")),当这个里面的值为01====>07时 ...
- Linux 出现telnet: 127.0.0.1: Connection refused错误解决办法
Linux 出现telnet: connect to address 127.0.0.1: Connection refused错误解决办法 没有xinetd服务: 1./etc/init.d目录中放 ...
- The specified framework 'Microsoft.NETCore.App', version '1.0.1' was not found 解决办法
环境:Centos 7 已经下载安装.NET Core 1.1 Microsoft .NET Core Shared Framework Host Version : Build : 928f77c4 ...
- VC++6.0打开文件出错的解决办法
1.下载http://support.microsoft.com/kb/241396里面的一个叫FileTool.exe的文件并解压,解压后是一个vc工程,用vc6.0打开工程,编译,得到FileTo ...
- 转:Selenium2.0 click()不生效的解决办法
除了http://573301735.com/?p=5126讲的,昨天又发现一个让我1个小时生不如死的问题,就是使用两个不同的配置文件来初始化driver,findelement方法获取到的坐标居然不 ...
- 对‘TIFFReadDirectory@LIBTIFF_4.0’未定义的引用-------------- 解决办法
ABLE_DEPRECATED' is defined [-Winvalid-pch] //usr/lib/libvtkIO.so.5.10:对‘TIFFReadDirectory@LIBTIFF_4 ...
- Unity3d导入3dmax后model 的缩放为0.0254的原因以及解决办法
http://blog.csdn.net/pdw_jsp/article/details/51259493 这个问题其实已经早都出现过了,今天我们这边也碰到了,这里做个记录吧 导致的问题~ 场景的比例 ...
- DotNetCore.1.0.1-VS2015Tools.Preview2.0.3 相关问题及解决办法
本月16号,MS发布了 .NET Core 1.1.作为一个用贯MS产品的小盆友,我第一时间就把相关的安装包下载下来了,然后果断安装(入坑). 我猜你来看这篇博客可能遇到了和我一样的问题. 问题0:正 ...
随机推荐
- Oracle PLSQL游标、游标变量的使用
参考文章:https://www.cnblogs.com/huyong/archive/2011/05/04/2036377.html 在 PL/SQL 程序中,对于处理多行记录的事务经常使用游标来实 ...
- PS下修改背景色
1.打开要修改的图片 2.选择左侧的快速选择工具,右键选择魔法棒 3.在图片上点击左键选取背景 4.菜单栏选择编辑,点击填充 5.在填充选项框中选择“颜色",点击选取要使用的颜色,确定
- C语言实现归并排序
#include<stdio.h> #define MAXN 100 //A[p,q] A[q+1,r]是两个有序数组,想办法把他们结合成一个有序数组 void merge(int A[] ...
- 采坑复盘:logging日志能用封装后的函数来打日志,发现filename一直显示封装logging函数的方法所在的文件名
问题: logging日志能用封装后的函数来打日志,发现filename一直显示封装logging函数的方法所在的文件名 原因: logging记录的是第一个函数执行所在的文件,那用封装的函数,首先执 ...
- flask实战-个人博客-视图函数
视图函数 在上面我们创建了所有必须的模型类.模板文件和表单类.经过程序规划和设计后,我们可以创建大部分视图函数.这些视图函数暂时没有实现具体功能,仅渲染对应的模板,或是重定向到其他视图.以blog蓝本 ...
- 接口测试中,数据驱动时,参数各类型,空或None的处理
天天说接口测试,天天说数据驱动,但网上的各种教程太烂,遇到实际情况就傻眼了. 来来来,我们看一个例子 假设,有下面这样一个接口,获取用户信息,可以带的参数如下: 用户名(uname) str(),非必 ...
- IComparable<T>.CompareTo(T) 方法
IComparable<T>.CompareTo(T) 方法 定义 命名空间: System 程序集: System.Runtime.dll, mscorlib.dll, netstand ...
- (HK1-1)海康网络摄像机的使用
https://blog.csdn.net/u014552102/article/details/86700057 一.手机客户端操作: 首先在莹石商城官网https://www.ys7.com/下 ...
- [RN] React Native 获取验证码 按钮
React Native 获取验证码 按钮 效果如图: 实现方法: 一.获取验证码 按钮组件 封装 CountDownButton.js "use strict"; import ...
- zabbix监控之zabbix-agent被动变为主动,搭建Proxy代理
1.Agent被动变为主动:环境设定 base2 172.25.78.12 zabbix-serverbase3 172.25.78.13 zabbix-agent开启服务 # 在服务端[root@b ...