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 相关文章推荐
实现dedecms全站URL静态化改造的代码
Mar 29 PHP
PHP页面间传递参数实例代码
Jun 05 PHP
php横向重复区域显示二法
Sep 25 PHP
php addslashes 利用递归实现使用反斜线引用字符串
Aug 05 PHP
php中动态调用函数的方法
Mar 16 PHP
PHP学习笔记(一):基本语法之标记、空白、和注释
Apr 17 PHP
PHP解密Unicode及Escape加密字符串
May 17 PHP
PHP+jQuery翻板抽奖功能实现
Oct 19 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
Dec 15 PHP
PHP 中 var_export、print_r、var_dump 调试中的区别
Jun 19 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
Mar 26 PHP
Mac系统下搭建Nginx+php-fpm实例讲解
Dec 15 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中获取变量的变量名的一段代码的bug分析
2011/07/07 PHP
Ajax+PHP实现的删除数据功能示例
2019/02/12 PHP
Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否存)
2010/09/12 Javascript
javascript 单例/单体模式(Singleton)
2011/04/07 Javascript
jQuery.buildFragment使用方法及思路分析
2013/01/07 Javascript
JS 实现导航栏悬停效果
2013/09/23 Javascript
如何正确使用javascript 来进行我们的程序开发
2014/06/23 Javascript
javascript解析json实例详解
2014/11/05 Javascript
JavaScript中的类与实例实现方法
2015/01/23 Javascript
JS制作手机端自适应缩放显示
2015/06/11 Javascript
JS实现自定义状态栏动画文字效果示例
2017/10/12 Javascript
详解node.js 下载图片的 2 种方式
2018/03/02 Javascript
Vue.js组件高级特性实例详解
2018/12/24 Javascript
Node如何后台数据库使用增删改查功能
2019/11/21 Javascript
jQuery实现弹出层效果
2019/12/10 jQuery
基于vue实现探探滑动组件功能
2020/05/29 Javascript
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
Python数组条件过滤filter函数使用示例
2014/07/22 Python
Python文件去除注释的方法
2015/05/25 Python
python 串口读取+存储+输出处理实例
2019/12/26 Python
python中使用you-get库批量在线下载bilibili视频的教程
2020/03/10 Python
python调用有道智云API实现文件批量翻译
2020/10/10 Python
基于PyTorch中view的用法说明
2021/03/03 Python
JSF面试题:Jsf中导航的标签是什么
2013/04/20 面试题
大型活动组织方案
2014/05/10 职场文书
公司离职证明范本(汇总)
2014/09/10 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
向女朋友道歉的话
2015/01/20 职场文书
物流仓管员岗位职责
2015/04/01 职场文书
组织委员竞选稿
2015/11/21 职场文书
趣味运动会口号
2015/12/24 职场文书
党性教育心得体会(共6篇)
2016/01/21 职场文书
一个成功的互联网创业项目,必须满足这些要求
2019/08/23 职场文书
用 Python 元类的特性实现 ORM 框架
2021/05/19 Python
Redis集群节点通信过程/原理流程分析
2022/03/18 Redis
Grafana可视化监控系统结合SpringBoot使用
2022/04/19 Redis