1. 16 進数文字を含む文字列は数値として扱われなくなりました
16 進数文字を含む文字列は数値として扱われなくなり、別の方法で扱われることもなくなりました。たとえば、次のコード:
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 関数を使用して、文字列に 16 進文字が含まれているかどうか、または整数 $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)2 に変換できるかどうかを確認できます。 \u{後で不正な文字が含まれている場合、エラーが報告されます
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 クイック作成 [中小企業フォーラム]](https://img.php.cn/upload/course/000/000/035/5d27fb58823dc974.jpg)









