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 相关文章推荐
dede3.1分页文字采集过滤规则详说(图文教程)
Apr 03 PHP
PHP DataGrid 实现代码
Aug 12 PHP
PHP 手机归属地查询 api
Feb 08 PHP
PHP中如何判断AJAX提交的数据
Feb 05 PHP
PHP flush()与ob_flush()的区别详解
Jun 03 PHP
php代码书写习惯优化小结
Jun 20 PHP
PHP CURL CURLOPT参数说明(curl_setopt)
Sep 30 PHP
Drupal7 form表单二次开发要点与实例
Mar 02 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十五)
Jun 30 PHP
XHProf报告字段含义的解析
May 17 PHP
php判断/计算闰年的方法小结【三种方法】
Jul 06 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 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加密解密的代码
2007/07/16 PHP
php下使用iconv需要注意的问题
2010/11/20 PHP
php 随机排序广告的实现代码
2011/05/09 PHP
ThinkPHP验证码使用简明教程
2014/03/05 PHP
PHP使用SOAP扩展实现WebService的方法
2016/04/01 PHP
PHP中的use关键字及文件的加载详解
2016/11/28 PHP
php修改数组键名的方法示例
2017/04/15 PHP
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解
2020/06/05 PHP
javascript解析json数据的3种方式
2014/05/08 Javascript
form.submit()不能提交表单的原因分析
2014/10/23 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
2015/03/02 Javascript
详解JavaScript正则表达式之分组匹配及反向引用
2016/03/09 Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
2016/12/20 Javascript
js 只比较时间大小的实例
2017/10/26 Javascript
JS二分查找算法详解
2017/11/01 Javascript
纯js封装的ajax功能函数与用法示例
2018/05/14 Javascript
element el-input directive数字进行控制
2018/10/11 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
JS实现打字游戏
2019/12/17 Javascript
6种JavaScript继承方式及优缺点(小结)
2020/02/06 Javascript
使用nodejs实现JSON文件自动转Excel的工具(推荐)
2020/06/24 NodeJs
js中实现继承的五种方法
2021/01/25 Javascript
[56:41]iG vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/17 DOTA
Python实现设置windows桌面壁纸代码分享
2015/03/28 Python
python计算N天之后日期的方法
2015/03/31 Python
python实现单线程多任务非阻塞TCP服务端
2017/06/13 Python
html5唤起app的方法
2017/11/30 HTML / CSS
模具设计与制造专业应届生求职信
2013/10/18 职场文书
普罗米修斯教学反思
2014/02/06 职场文书
德语专业求职信
2014/03/12 职场文书
知识竞赛主持词
2014/03/26 职场文书
安全施工标语
2014/06/07 职场文书
安全标语大全
2014/06/10 职场文书
房产授权委托书范本
2014/09/22 职场文书
用python画城市轮播地图
2021/05/28 Python
JS封装cavans多种滤镜组件
2022/02/15 Javascript