PHP7 字符串处理机制修改


Posted in PHP onMarch 09, 2021

一、含有十六进制字符的字符串不再视为数字

含有十六进制字符的字符串不再视为数字,也不再区别对待。比如下面的代码:

var_dump("0x123" == "291");     // bool(false)     (previously true)
var_dump(is_numeric("0x123"));  // bool(false)     (previously true)
var_dump("0xe" + "0x1");        // int(0)          (previously 16)
var_dump(substr("foo", "0x1")); // string(3) "foo" (previously "oo")
// Notice: A non well formed numeric value encountered

可以使用filter_var函数来检查一个字符串是否包含十六进制字符或者是否可以转成一个整型

$str = "0xffff";
$int = filter_var($str, FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_HEX);
if (false === $int) {
    throw new Exception("Invalid integer!");
}
var_dump($int); // int(65535)

 

二、\u{后面如果包含非法字符会报错

双引号和heredocs语法里面增加了unicode 码点转义语法,“\u{”后面必须是utf-8字符。如果是非utf-8字符,会报错:

$str = "\u{xyz}"; // Fatal error: Invalid UTF-8 codepoint escape sequence

可以通过对第一个\进行转义来避免这种错误。

 $str = "\\u{xyz}"; // Works fine

“\u”后面如果没有{,则没有影响:

$str = "\u202e"; // Works fine

PHP IntlChar()

PHP 7 通过 intl 扩展来支持国际化 (i18n) 和本地化 (l10n) 。此扩展仅仅是对 ICU 库的基础包装,并提供了和 ICU 库类似的方法和特性。

PHP 7 通过新的 IntlChar 类暴露出 ICU 中的 Unicode 字符特性。这个类自身定义了许多静态方法用于操作多字符集的 unicode 字符。

实例

<?php
printf('%x', IntlChar::CODEPOINT_MAX);
echo IntlChar::charName('@');
var_dump(IntlChar::ispunct('!'));
?>
以上程序执行输出结果为:

10ffff
COMMERCIAL AT
bool(true)

 

PHP 相关文章推荐
用PHP制作静态网站的模板框架(三)
Oct 09 PHP
一个PHP模板,主要想体现一下思路
Dec 25 PHP
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
Dec 16 PHP
基于HBase Thrift接口的一些使用问题及相关注意事项的详解
Jun 03 PHP
百度实时推送api接口应用示例
Oct 21 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
Oct 30 PHP
ThinkPHP控制器间实现相互调用的方法
Oct 31 PHP
PHP 二维数组和三维数组的过滤
Mar 16 PHP
php+redis实现多台服务器内网存储session并读取示例
Jan 12 PHP
php之header的不同用法总结(实例讲解)
Nov 28 PHP
PHP实现的DES加密解密类定义与用法示例
Nov 02 PHP
PHP5.6读写excel表格文件操作示例
Feb 26 PHP
PHP7 整型处理机制修改
Mar 09 #PHP
PHP7 参数处理机制修改
Mar 09 #PHP
PHP7 foreach() 函数修改
Mar 09 #PHP
PHP7 list() 函数修改
Mar 09 #PHP
PHP7变量处理机制修改
Mar 09 #PHP
PHP7新特性
Mar 09 #PHP
Yii 实现数据加密和解密
Mar 09 #PHP
You might like
C# Assembly类访问程序集信息
2009/06/13 PHP
解析PHP中的正则表达式以及模式匹配
2013/06/19 PHP
php 去除html标记--strip_tags与htmlspecialchars的区别详解
2013/06/26 PHP
注意:php5.4删除了session_unregister函数
2013/08/05 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
通过遮罩层实现浮层DIV登录的js代码
2014/02/07 Javascript
JavaScript实现拖拽网页内元素的方法
2015/04/15 Javascript
jQuery实现伸展与合拢panel的方法
2015/04/30 Javascript
jquery实现不包含当前项的选择器实例
2015/06/25 Javascript
javascript简单实现滑动菜单效果的方法
2015/07/27 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
2016/01/22 Javascript
JavaScript判断数组是否存在key的简单实例
2016/08/03 Javascript
详解基于Vue+Koa的pm2配置
2017/10/24 Javascript
vue 将页面公用的头部组件化的方法
2017/12/18 Javascript
JS实现的简单分页功能示例
2018/08/23 Javascript
JS基于开关思想实现的数组去重功能【案例】
2019/02/18 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
2019/05/29 Javascript
开发中常用的25个JavaScript单行代码(小结)
2019/06/28 Javascript
node.js express框架简介与实现
2019/07/23 Javascript
Vue实现购物车实例代码两则
2020/05/30 Javascript
[01:01:25]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第三局
2016/02/27 DOTA
对Python 数组的切片操作详解
2018/07/02 Python
Python3中编码与解码之Unicode与bytes的讲解
2019/02/28 Python
简单了解Python读取大文件代码实例
2019/12/18 Python
Python PyQt5整理介绍
2020/04/01 Python
解决python父线程关闭后子线程不关闭问题
2020/04/25 Python
Python3如何使用多线程升程序运行速度
2020/08/11 Python
python空元组在all中返回结果详解
2020/12/15 Python
真正了解CSS3背景下的@font face规则
2017/05/04 HTML / CSS
深深扎根运动世界的生活品牌:Tillys
2017/10/30 全球购物
伦敦的高级牛仔布专家:Trilogy
2018/08/06 全球购物
天猫活动策划方案
2014/08/21 职场文书
实验心得体会
2014/09/05 职场文书
机关党员四风问题个人整改措施
2014/10/26 职场文书
三八妇女节慰问信
2015/02/14 职场文书
中学生打架《检讨书》范文
2019/08/12 职场文书