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 相关文章推荐
第六节 访问属性和方法 [6]
Oct 09 PHP
php intval的测试代码发现问题
Jul 27 PHP
php 网页游戏开发入门教程一(webgame+design)
Oct 26 PHP
PHP 命令行参数详解及应用
May 18 PHP
PHP缓存技术的多种方法小结
Aug 14 PHP
提升PHP性能的21种方法介绍
Jun 25 PHP
php数组索引的Key加引号和不加引号的区别
Aug 19 PHP
PHP扩展模块memcached长连接使用方法分析
Dec 24 PHP
浅谈php中的循环while、do...while、for、foreach四种循环
Nov 05 PHP
PHP基于反射机制实现插件的可插拔设计详解
Nov 10 PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 PHP
php 解析非标准json、非规范json
Apr 01 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
PHP防止图片盗用(盗链)的方法小结
2016/11/11 PHP
asp.net和php的区别点总结
2019/10/10 PHP
善用事件代理,警惕闭包的性能陷阱。
2011/01/20 Javascript
解析jquery获取父窗口的元素
2013/06/26 Javascript
JavaScript二维数组实现的省市联动菜单
2014/05/08 Javascript
node.js中的url.parse方法使用说明
2014/12/10 Javascript
谷歌浏览器调试JavaScript小技巧
2014/12/29 Javascript
jquery解析XML及获取XML节点名称的实现代码
2016/05/18 Javascript
JavaScript数组合并的多种方法
2016/05/22 Javascript
用jquery快速解决IE输入框不能输入的问题
2016/10/04 Javascript
js仿iphone秒表功能 计算平均数
2017/01/11 Javascript
JS获取浮动(float)元素的style.left值为空的快速解决办法
2017/02/19 Javascript
基于JavaScript实现的快速排序算法分析
2017/04/14 Javascript
JS实现移动端判断上拉和下滑功能
2017/08/07 Javascript
前端MVVM框架解析之双向绑定
2018/01/24 Javascript
基于vue-cli3和element实现登陆页面
2019/11/13 Javascript
vue滑动吸顶及锚点定位的示例代码
2020/05/10 Javascript
python中执行shell的两种方法总结
2017/01/10 Python
Python使用APScheduler实现定时任务过程解析
2019/09/11 Python
python的range和linspace使用详解
2019/11/27 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
2020/05/11 Python
django中嵌套的try-except实例
2020/05/21 Python
PyCharm2019 安装和配置教程详解附激活码
2020/07/31 Python
Pytest如何使用skip跳过执行测试
2020/08/13 Python
Python 爬取淘宝商品信息栏目的实现
2021/02/06 Python
用CSS3来实现社交分享按钮
2014/11/11 HTML / CSS
HTML5和CSS3实例教程总结(推荐)
2016/07/18 HTML / CSS
少先队学雷锋活动总结范文
2014/03/09 职场文书
如何写自我评价?自我评价写什么好?
2014/03/14 职场文书
合伙协议书
2014/04/23 职场文书
小学教师个人先进事迹材料
2014/05/17 职场文书
工作保证书怎么写
2015/02/28 职场文书
物资采购管理制度
2015/08/06 职场文书
给numpy.array增加维度的超简单方法
2021/06/02 Python
PyMongo 查询数据的实现
2021/06/28 Python
ubuntu20.04虚拟机无法上网的问题及解决
2022/12/24 Servers