CodeIgniter获取header信息
以下两个用于获取 Request Headers
$this->input->request_headers()
返回 HTTP 请求头数组
$this->input->get_request_header()
返回某个指定的 HTTP 请求头,如果不存在,则返回 NULL
以下用于获取使用 header() 设置的 Response Headers
$this->output->get_header($header)
返回请求的 HTTP 头,如果 HTTP 头还没设置,返回 NULL
Mac安装远程桌面连接
转自:https://blog.csdn.net/github_38358734/article/details/70306835
Microsoft Remote Desktop for Mac v10.3.11 下载:
下载地址:http://mac.softpedia.com/get/Utilities/Microsoft-Remote-Desktop-Connection.shtml
------------------------------
转自:https://zhuanlan.zhihu.com/p/34202380
Microsoft Remote Desktop for Mac v8.0.7 下载:
百度网盘:https://pan.baidu.com/share/init?surl=htQKmTA
密码:wmcy
FileZilla FTP Server 设置FTP服务器证书启用FTPS
标题:FileZilla FTP Server FTP over TLS settings 设置FTP服务器证书启用FTPS
转自:https://www.51-n.com/t-4562-1-1.html
FileZilla FTP Server FTP over TLS settings 设置FTP服务器证书,绑定TLS证书启用FTPS访问,还可以强制客户端使用FTPS加密协议访问FTP服务器禁止未加密连接。FileZilla FTP Server TLS Certificate证书可以去阿里云或者腾讯云等各种SSL证书倒卖机构购买,目前这些网站都有免费服务器HTTPS/FTPS证书,FTPS证书和HTTPS证书是通用且可以共用的, 关于SSL证书/TLS证书 SSL/TLS(RFC5246,Secure Socket Layer/Transport Layer Security)可以自行上Google百度一下,当然,如果只是自己玩玩FTP加密,可以使用FileZilla内置的Generate New Certificate... 按钮生成自签证书,唯一的区别是自签证书客户端是不认的,会出现证书错误的提示,出现提示后直接允许连接FTP服务器即可。
- 将证书文件下载并保存到FileZilla FTP服务器所在的服务器电脑上
假设D:\apps\server\TLS\wuxiancheng.cn\目录中存在certificate.crt和private.key两个文件,其中certificate.crt为保存服务器证书公钥的文件private.key为保存服务器证书私钥的文件 - 运行FileZilla Server Interface.exe,依次进入Edit -> Settings -> FTP over TLS settings
- 点击选中Enagel FTP over TLS support (FTPS) 如果只允许FTPS加密访问FTP服务器,还可以将Disallow plain unencrypted FTP选中
- 将X.509 Certificate的Private key file设置为D:\apps\server\TLS\wuxiancheng.cn\private.key,将Certificate file设置为D:\apps\server\TLS\wuxiancheng.cn\certificate.crt **证书公钥和私钥可以保存到一个文件中去然后将两个配置项都设置为相同的路径
- 还可以设置Explicit and implicit FTP over TLS.
Allow explicit FTP over TLS (default: yes)
Note: Explicit FTP over TLS shares the normal ftp port configured on the General settings page.
Listen for implicit FTP over TLS on the following ports (default: 990)
隐式FTPS认证相对FTPS显式认证更安全,显式FTPS使用General settings -> Connection settings -> Listen on these ports设置的FTP端口,隐式FTPS默认使用990端口,也可以指定为其他端口号。注意显式FTPS设置的端口号服务器会自动监听,但不能添加到General settings -> Connection settings -> Listen on these ports的FileZill Server监听端口列表中去,否则会报错Failed to bind the listen socket on port %d to the following IPs: *** - 将File transfer security中的两个项目选中确保文件传输安全
These settings need to be enabled for file transfers to be secure.
√Force PROT P to encrypt file transfers when using FTP over TLS.
√Require TLS session resumption on data connection when using PROT P.
- FTP
- FTP over SSH
- FTP using implicit SSL
- FTP using implicit explicit SSL (Auth SSL)
- FTP using implicit explicit SSL (Auth TLS)
以上为FlashFxp中的FTP连接类型,在FileZilla FTP Client中需要选择Protocol为FTP-File Transfer Protocol,然后选择Encryption,包括的选项有Use explicit FTP over TLS if available / Require explicit FTP over TLS / Require implicit FTP over TLS / Only use plain FTP (insecure)
不同的FTP客户端显示的内容不同,请自行参照选择,非英文版本请自行脑所用语言。
FTP服务器地址请填写TLS证书中的域名或IP,否则也会报错。
如果服务器上启用了防火墙,必须为FTP服务器使用的端口设置例外,如果使用被动模式连接FTP服务器,必须为FTP服务器程序设置例外,否则会出现无法连接的情况。
历届奥斯卡获奖影片 奥斯卡获奖电影(1971-2020年)
转自:https://www.maigoo.com/news/298185.html
2020年(92届)
最佳影片《寄生虫》
提名影片名单:《极速车王》《爱尔兰人》《少年乔乔的异想世界》《小丑》《小妇人》《婚姻故事》《1917》《好莱坞往事》《寄生虫》
2019年(91届)
最佳影片《绿皮书》
提名影片名单:《黑豹》《黑色党徒》《宠儿》《绿皮书》《罗马》《一个明星的诞生》《副总统》《波西米亚狂想曲》
2018年(90届)
最佳影片《水形物语》
提名影片名单:《请以你的名字呼唤我》《至暗时刻》《敦刻尔克》《逃出绝命镇》《伯德小姐》《魅影缝匠》《华盛顿邮报》《水形物语》《三块广告牌》
2017年(89届)
最佳影片《月光男孩》
提名影片名单:《降临》 《血战钢锯岭》 《隐藏人物》 《雄狮》 《月光男孩》 《藩篱》 《爱乐之城》 《赴汤蹈火》《海边的曼彻斯特》
2016年(88届)
最佳影片《聚焦》
提名影片名单:《大空头》《间谍之桥》《布鲁克林》《疯狂的麦克斯4》《火星救援》《荒野猎人》《房间》《聚焦》
2015年(87届)
最佳影片 《鸟人》
提名影片名单:《美国狙击手》《鸟人》《模仿游戏》《少年时代》《万物理论》《爆裂鼓手》《塞尔玛》《布达佩斯大饭店》
2014年(86届)
最佳影片《为奴十二年》
提名影片名单:《美国骗局》《菲利普船长》《达拉斯买家俱乐部》《地心引力》《她》《内布拉斯加》《菲洛梅娜》《为奴十二年》《华尔街之狼》
2013年(85届)
获奖:《逃离德黑兰》
提名:《爱》《南国野兽》《乌云背后的幸福线》《逃离德黑兰》《少年派的奇幻漂流》《猎杀本·拉登》《林肯》《被解放的姜戈》《悲惨世界》
2012年(84届)
获奖:《艺术家》
提名:《艺术家》《后裔》《咫尺浩劫》《相助》《雨果的秘密》《午夜巴黎》《点球成金》《生命之树》《战马》
2011年(83届)
获奖:《国王的演讲》
提名:《黑天鹅》《斗士》《盗梦空间》《孩子们都很好》《国王的演讲》《127小时》《社交网络》《玩具总动员3》《冬天的骨头》
2010年(82届)
获奖:《拆弹部队》
提名:《拆弹部队》《无耻混蛋》《直上云霄》《珍爱》《阿凡达》《第九区》《飞屋环游记》《成长教育》《正经人》《弱点》
2009年(81届)
获奖:《贫民窟的百万富翁》
提名:《本杰明·巴顿奇事》《福斯特对话尼克松》《米尔克》《朗读者》《贫民窟的百万富翁》
2008年(80届)
获奖:《老无所依》
提名:《赎罪》《朱诺》《英雄不问出处》《老无所依》《血色黑金》
2007年(79届)
获奖:《无间道风云》
提名:《阳光小美女》《硫磺岛家书》《女王》《通天塔》
2006年(78届)
获奖:《冲撞》
提名:《断背山》《卡波特》《晚安,好运》《慕尼黑》
2005年(77届)
获奖:《百万美元宝贝》
提名:《飞行者》《杯酒人生》《寻找梦幻岛》《雷》
2004年(76届)
获奖:《指环王3:王者回归》
提名:《迷失东京》《怒海争锋》《神秘河》《奔腾年代》
2003年(75届)
获奖:《芝加哥》
提名:《钢琴师》《魔戒二部曲─双城奇谋》《时时刻刻》《纽约风云》
2002年(74届)
获奖:《美丽心灵》
提名:《红磨坊》《魔戒首部曲:魔戒现身》《意外边缘》《谜雾庄园》
2001年(73届)
获奖:《角斗士》
提名:《卧虎藏龙》《毒网》《永不妥协》《浓情巧克力》
2000年(72届)
获奖:《美国丽人》
提名:《灵异第六感》《局内人》《绿色奇迹》《总有骄阳》
1999年(71届)
获奖:《恋爱中的莎士比亚》
提名:《美丽人生》《红色警戒》《拯救大兵瑞恩》《伊莉莎白》
1998年(70届)
获奖:《泰坦尼克》
提名:《幕后嫌疑犯》《骄阳似我》《一脱到底》《猫屎先生》
1997年(69届)
获奖:《英国病人》
提名:《闪亮的风采》《秘密与谎言》《甜心先生》《冰雪暴》
1996年(68届)
获奖:《勇敢的心》
提名:《理智与情感》《事先张扬的求爱事件》《小猪宝贝》《阿波罗13号》
1995年(67届)
获奖:《阿甘正传》
提名:《肖申克的救赎》《机智问答》《低俗小说》《四个婚礼一个葬礼》
1994年(66届)
获奖:《辛德勒的名单》
提名:《告别有情天》《钢琴别恋》《因父之名》《亡命天涯》
1993年(65届)
获奖:《不可饶恕》
提名:《闻香识女人》《情可问天》《义海雄风》《哭泣游戏》
1992年(64届)
获奖:《沉默的羔羊》
提名:《潮浪王子》《惊天大刺杀》《一代情枭毕斯》《美女与野兽》
1991年(63届)
获奖:《与狼共舞》
提名:《好家伙》《教父第三集》《人鬼情未了》《无语问苍天》
1990年(62届)
获奖:《为戴茜小姐开车》
提名:《我的左脚》《幻之地》《春风化雨》《生于七月四日》
1989年(61届)
获奖:《雨人》
提名:《上班女郎》《烈血暴潮》《危险关系》《意外的旅客》
1988年(60届)
获奖:《末代皇帝》
提名:《月色撩人》《希望与荣耀》《致命的吸引力》《收播新闻》
1987年(59届)
获奖:《野战排》
提名:《看得见风景的房间》《教会》《汉娜姐妹》《悲怜上帝的女儿》
1986年(58届)
获奖:《走出非洲》
提名:《证人》《普里兹家族的荣誉》《蜘蛛女之吻》《紫色》
1985年(57届)
获奖:《莫扎特传》
提名:《大兵》《我心深处》《印度之行》《战火屠城》
1984年(56届)
获奖:《母女情深》
提名:《温柔的怜悯》《征空先锋》《近身》《山水又相逢》
1983年(55届)
获奖:《甘地传》
提名:《大审判》《窈窕淑男》《失踪外星人E.T.》
1982年(54届)
获奖:《火的战车》
提名:《烽火赤焰万里情》《夺宝奇兵》《金色池塘》《大西洋城》
1981年(53届)
获奖:《普通人》
提名:《苔丝》《愤怒的公牛》《象人》《矿工的女儿》
1980年(52届)
获奖:《克莱墨夫妇》
提名:《诺玛蕊》《突破》《 现代启示录》《浮生若梦》
1979年(51届)
获奖:《猎鹿人》
提名:《不结婚的女人》《午夜快车》《天堂可以等待》《返乡》
1978年(50届)
获奖:《安妮·霍尔》
提名:《转折点》《星球大战》《茱莉亚》《再见女郎》
1977年(49届)
获奖:《洛奇》
提名:《的士司机》《电视台风云》《奔向光荣》《惊天大阴谋》
1976年(48届)
获奖:《飞越疯人院》
提名:《纳斯维尔》《大白鲨》《炎热的下午》《乱世儿女》
1975年(47届)
获奖:《教父续集》
提名:《火烧摩天楼》《连尼传》《对话》《唐人街》
1974年(46届)
获奖:《骗中骗》
提名:《哭泣与耳语》《金屋春宵》《驱魔人》《美国风情画》
1973年(45届)
获奖:《教父》
提名:《大移民》《儿子离家时》《激流四勇士》《歌厅》
1972年(44届)
获奖:《法国贩毒网》
提名:《俄宫秘史》《最后一场电影》《屋顶上的小提琴手》《发条橙》
1971年(43届)
获奖:《巴顿将军》
提名:《国际机场》《陆军野战医院》《五支歌》《爱情故事》
CSS 多行文本溢出时显示省略号
display:block;display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;
多行
display:block; display:-webkit-box; overflow:hidden; text-overflow:ellipsis; -webkit-line-clamp:2; -webkit-box-orient:vertical;
单行
display:block; overflow:hidden; text-overflow:ellispis; white-space:nowrap;
CodeIgniter同数据库/跨数据库复制表
同数据库复制表结构和数据:
$this->db->query('CREATE TABLE tab_new SELECT * FROM tab_old');
跨数据库复制表结构和数据:
//从db2获取原表的创建表sql语句 $query = $this->db2->query("SHOW CREATE TABLE $table_name")->row_array(); $query = $query[''Create Table']; //在当前数据库创建新表 $this->db->query($query); //遍历原表数据并写入新表 $res = $this->db2->get($table_name)->result_array(); foreach($res as $row){ $this->db->insert($table_name, $row); }
PHP过滤器预定义常量
PHP过滤器函数
- filter_has_var — 检测是否存在指定类型的变量
- filter_id — 返回与某个特定名称的过滤器相关联的id
- filter_input_array — 获取一系列外部变量,并且可以通过过滤器处理它们
- filter_input — 通过名称获取特定的外部变量,并且可以通过过滤器处理它
- filter_list — 返回所支持的过滤器列表
- filter_var_array — 获取多个变量并且过滤它们
- filter_var — 使用特定的过滤器过滤一个变量
以下转自:https://blog.csdn.net/asty9000/article/details/83186890
变量类型
常量名 | 值(PHP7.2.4) | 说明 |
INPUT_POST | 0 | POST变量 |
INPUT_GET | 1 | GET变量 |
INPUT_COOKIE | 2 | COOKIE变量 |
INPUT_ENV | 4 | ENV变量 |
INPUT_SERVER | 5 | SERVER变量 |
INPUT_SESSION | 6 | SESSION变量 |
INPUT_REQUEST | 99 | REQUEST变量 |
过滤器标记
常量名 | 值(PHP7.2.4) | 说明 |
FILTER_FLAG_NONE | 0 | 表示没有使用标记 |
FILTER_FLAG_ALLOW_OCTAL | 1 | 允许八进制的字符(0[0-7]+)。 |
FILTER_FLAG_ALLOW_HEX | 2 | 允许十六进制的字符(0x[0-9a-fA-F]+)。 |
FILTER_NULL_ON_FAILURE | 134217728 | 过滤失败时返回null,而不是false。 |
FILTER_FLAG_ALLOW_THOUSAND | 8192 | 允许使用千分位分隔符(,)。 |
FILTER_FLAG_SCHEME_REQUIRED | 65536 | url需要带协议部分(PHP5.2.1FILTER_VALIDATE_URL隐式使用)。 |
FILTER_FLAG_HOST_REQUIRED | 131072 | url需要带ip地址或域名部分(PHP5.2.1FILTER_VALIDATE_URL隐式使用)。 |
FILTER_FLAG_PATH_REQUIRED | 262144 | url需要带路径部分。 |
FILTER_FLAG_QUERY_REQUIRED | 524288 | url需要带数据部分。 |
FILTER_FLAG_EMAIL_UNICODE | 1048576 | PHP7.1起,在邮件地址用户名部分允许 Unicode 字符。 |
FILTER_FLAG_IPV4 | 1048576 | 仅允许IPv4地址。 |
FILTER_FLAG_IPV6 | 2097152 | 仅允许IPv6地址。 |
FILTER_FLAG_NO_PRIV_RANGE | 8388608 | ip地址不在私有地址范围内。 |
FILTER_FLAG_NO_RES_RANGE | 4194304 | ip地址不在保留地址范围内(PHP5.2.10起,支持IPv6地址)。 |
FILTER_FLAG_HOSTNAME | 1048576 | PHP7.0起,验证主机名(必须以字母数字字符开头,并且只包含字母数字或连字符)。 |
FILTER_FLAG_NO_ENCODE_QUOTES | 128 | 不对'和"进行编码。 |
FILTER_FLAG_STRIP_LOW | 4 | 去掉ASCII编码值小于32的字符。 |
FILTER_FLAG_STRIP_HIGH | 8 | 去掉ASCII编码值大于127的字符。 |
FILTER_FLAG_STRIP_BACKTICK | 512 | PHP5.3.2起,去掉反引号(`)。 |
FILTER_FLAG_ENCODE_LOW | 16 | 对ASCII编码值小于32的字符进行编码。 |
FILTER_FLAG_ENCODE_HIGH | 32 | 对ASCII编码值大于127的字符进行编码。 |
FILTER_FLAG_ENCODE_AMP | 64 | 对&进行编码。 |
FILTER_FLAG_ALLOW_FRACTION | 4096 | 保留小数点(.)。 |
FILTER_FLAG_ALLOW_THOUSAND | 8192 | 保留千位符(,)。 |
FILTER_FLAG_ALLOW_SCIENTIFIC | 16384 | 保留科学计数符(e或E)。 |
FILTER_REQUIRE_SCALAR | 33554432 | 需要值为标量。 |
FILTER_REQUIRE_ARRAY | 16777216 | 需要值为数组。 |
FILTER_FORCE_ARRAY | 67108864 | 如果值为标量,则将其作为数组处理,标量值作为数组元素。 |
FILTER_FLAG_EMPTY_STRING_NULL | 256 | PHP5.4起,如果是空字符串,则返回null。 |
验证过滤器
常量名 | 值(PHP7.2.4) | 说明 |
FILTER_VALIDATE_INT | 257 | 整型验证过滤器 |
FILTER_VALIDATE_BOOLEAN | 258 | 布尔验证过滤器 |
FILTER_VALIDATE_FLOAT | 259 | 浮点验证过滤器 |
FILTER_VALIDATE_REGEXP | 272 | 正则验证过滤器 |
FILTER_VALIDATE_URL | 273 | URL地址验证过滤器 |
FILTER_VALIDATE_EMAIL | 274 | 邮件地址验证过滤器 |
FILTER_VALIDATE_IP | 275 | IP地址验证过滤器 |
FILTER_VALIDATE_MAC | 276 | PHP5.5起,MAC地址验证过滤器 |
FILTER_VALIDATE_DOMAIN | 277 | 域名验证过滤器 |
清洗过滤器
常量名 | 值(PHP7.2.4) | 说明 |
FILTER_SANITIZE_STRING | 513 | 字符串过滤器 |
FILTER_SANITIZE_STRIPPED | 513 | 字符串过滤器的别名 |
FILTER_SANITIZE_ENCODED | 514 | url编码过滤器 |
FILTER_SANITIZE_SPECIAL_CHARS | 515 | 特殊字符过滤器 |
FILTER_UNSAFE_RAW | 516 | 原值过滤器 |
FILTER_SANITIZE_EMAIL | 517 | 邮件地址过滤器 |
FILTER_SANITIZE_URL | 518 | url地址过滤器 |
FILTER_SANITIZE_NUMBER_INT | 519 | 整型过滤器 |
FILTER_SANITIZE_NUMBER_FLOAT | 520 | 浮点过滤器 |
FILTER_SANITIZE_MAGIC_QUOTES | 521 | 转义过滤器 |
FILTER_SANITIZE_FULL_SPECIAL_CHARS | 522 | PHP5.3.3起,全部特殊字符过滤器 |
其他
常量名 | 值(PHP7.2.4) | 说明 |
FILTER_DEFAULT | 与配置的默认过滤器相同 | 与配置的默认过滤器相同 |
FILTER_CALLBACK | 1024 | 回调过滤器 |
PHP原生函数判断IP格式是否正确
一般我们都是通过正则表达式来判断IP格式是否正确,其实从php5.2.0之后,PHP就有专门的函数来做这个判断了。
filter_var — 使用特定的过滤器过滤一个变量
过滤器预定义常量见:http://wangxinyang.cn/wxy/view.asp?id=253
判断是否是合法IP方法如下:
if(filter_var($ip, FILTER_VALIDATE_IP)) { // it's valid } else { // it's not valid } //判断是否是合法的IPv4 IP地址 if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { // it's valid } else { // it's not valid } //判断是否是合法的公共IPv4地址,192.168.1.1这类的私有IP地址将会排除在外 if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE)) { // it's valid } else { // it's not valid } //判断是否是合法的IPv6地址 if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE)) { // it's valid } else { // it's not valid } //判断是否是public IPv4 IP或者是合法的Public IPv6 IP地址 if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) { // it's valid } else { // it's not valid }
以上转自:https://www.haibakeji.com/archives/313.html
/**
* 是否有效ipv4地址
*/
function is_ip($str){
return preg_match("/^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/", (string)$str) === 1 ? TRUE : FALSE;
}
/**
* 是否有效ipv6地址
* 1、可以是纯IPv6地址,如 fb80::86e2:c6f7:c749:2d43
* 2、可以是嵌入IPv4的IPv6地址,如 fb80::86e2:c6f7:c749:2d43:192.168.1.1
* 3、不能是带网卡interface标识的IPv6地址,如 fb80::86e2:c6f7:c749:2d43%15
* 4、$_SERVER['REMOTE_ADDR'] 获取的可能是3中所指的带网卡标识的IPv6,所以在判断前要先去掉网卡标识部分
*/
function is_ipv6($str){
return preg_match("/^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:)|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}(:[0-9A-Fa-f]{1,4}){1,2})|(([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){1,3})|(([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){1,4})|(([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){1,5})|([0-9A-Fa-f]{1,4}:(:[0-9A-Fa-f]{1,4}){1,6})|(:(:[0-9A-Fa-f]{1,4}){1,7})|(([0-9A-Fa-f]{1,4}:){6}(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3})|(([0-9A-Fa-f]{1,4}:){5}:(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3})|(([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){0,1}:(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3})|(([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){0,2}:(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3})|(([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){0,3}:(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3})|([0-9A-Fa-f]{1,4}:(:[0-9A-Fa-f]{1,4}){0,4}:(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3})|(:(:[0-9A-Fa-f]{1,4}){0,5}:(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}))$/", (string)$str) === 1 ? TRUE : FALSE;
}