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传输数据的代码
Nov 13 PHP
php 字符转义 注意事项
May 27 PHP
php学习笔记 PHP面向对象的程序设计
Jun 13 PHP
Pain 全世界最小最简单的PHP模板引擎 (普通版)
Oct 23 PHP
php写的带缓存数据功能的mysqli类
Sep 06 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
Oct 13 PHP
php提示Failed to write session data错误的解决方法
Dec 17 PHP
php+ajax 实现输入读取数据库显示匹配信息
Oct 08 PHP
PHP可变函数学习小结
Nov 29 PHP
thinkphp Apache配置重启Apache1 restart 出错解决办法
Feb 15 PHP
php表单文件iframe异步上传实例讲解
Jul 26 PHP
PHP面向对象程序设计之构造方法和析构方法详解
Jun 13 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迭代器实现斐波纳契数列的函数
2013/11/12 PHP
php使用curl访问https示例分享
2014/01/17 PHP
php之curl设置超时实例
2014/11/03 PHP
PHP实现微信对账单处理
2018/10/01 PHP
HTML DOM的nodeType值介绍
2011/03/31 Javascript
JS+CSS实现六级网站导航主菜单效果
2015/09/28 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
深入理解JS中的substr和substring
2016/04/26 Javascript
JavaScript对Json的增删改属性详解
2016/06/02 Javascript
JS去除空格和换行的正则表达式(推荐)
2016/06/14 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
2017/03/13 Javascript
AngularJS中使用ngModal模态框实例
2017/05/27 Javascript
如何封装了一个vue移动端下拉加载下一页数据的组件
2019/01/06 Javascript
vue watch关于对象内的属性监听
2019/04/22 Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
2019/09/20 Javascript
JS前端模块化原理与实现方法详解
2020/03/17 Javascript
详解ES6 扩展运算符的使用与注意事项
2020/11/12 Javascript
linux系统使用python获取内存使用信息脚本分享
2014/01/15 Python
推荐11个实用Python库
2015/01/23 Python
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
在windows下快速搭建web.py开发框架方法
2016/04/22 Python
python网络爬虫学习笔记(1)
2018/04/09 Python
浅谈pytorch和Numpy的区别以及相互转换方法
2018/07/26 Python
Python3中_(下划线)和__(双下划线)的用途和区别
2019/04/26 Python
django 做 migrate 时 表已存在的处理方法
2019/08/31 Python
Python3.7 读取音频根据文件名生成脚本的代码
2020/04/07 Python
keras中的History对象用法
2020/06/19 Python
python中取绝对值简单方法总结
2020/07/24 Python
vue.js刷新当前页面的实例讲解
2020/12/29 Python
水芝澳美国官网:H2O Plus
2016/10/15 全球购物
如何高效率的查找一个月以内的数据
2012/04/15 面试题
介绍一下Python中webbrowser的用法
2013/05/07 面试题
师范应届生求职信
2013/11/15 职场文书
房产公证书样本
2015/01/23 职场文书
经营目标责任书
2015/05/08 职场文书
如何使用Python对NetCDF数据做空间相关分析
2021/04/21 Python