上QQ阅读APP看书,第一时间看更新
5.4 PHP 7的新变化——字符串处理机制的修改
在PHP 7版本中,字符串处理机制发生了以下变化。
1.含有十六进制字符的字符串不再视为数字
含有十六进制字符的字符串不再视为数字,也不再区别对待。
例如下面的代码:
可以使用filter_var函数来检查一个字符串是否包含十六进制字符或者是否可以转成整数类型。
例如下面的代码:
$str = "0xffff"; $int = filter_var($str, FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_HEX); if (false === $int) { throw new Exception("非法整数值!"); } var_dump($int); // 结果为65535
2.“\u{”后面包含非法字符会报错
双引号和heredoc语法里面增加了Unicode编码转义语法,“\u{”后面必须是UTF-8字符。如果是非UTF-8字符,就会报错:
$str = "\u{xyz}"; // Parse error: Invalid UTF-8 codepoint escape sequence
可以通过对第1个“\”进行转义来避免这种错误。
$str = "\\u{xyz}"; //不会报错
“\u”后面如果没有“{”,则没有影响:
$str = "\u202e"; //不会报错