日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php7 字符串,php7 参数、整形及字符串处理机制修改实例分析

發布時間:2024/7/19 php 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php7 字符串,php7 参数、整形及字符串处理机制修改实例分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文實例講述了php7 參數、整形及字符串處理機制修改。分享給大家供大家參考,具體如下:

參數處理機制修改

一、重復參數命名不再支持。

重復的參數命名不再支持。比如下面的代碼執行的時候會報錯:

public function foo($a, $b, $unused, $unused) {

// ...

}

編者按:應該沒有人這樣用吧。

二、func_get_arg和func_get_args()調整

func_get_arg()和func_get_args()這兩個方法返回參數當前的值,而不是傳入時的值。當前的值有可能會被修改

function foo($x) {

$x++;

var_dump(func_get_arg(0));

}

foo(1);

上面的代碼會打印2, 而不是1。如果想打印原始的值,調用的順序調整下即可。

三、同樣在打印異常回溯信息的時候也是顯示修改后的值。

function foo($x) {

$x = 42;

throw new Exception;

}

foo("string");

PHP7的運行結果:

Stack trace:

#0 file.php(4): foo(42)

#1 {main}

PHP5的運行結果:

Stack trace:

#0 file.php(4): foo('string')

#1 {main}

這個調整不會影響代碼的行為,不過在調試的時候需要注意這個變化。

其他和參數有關的函數都是同樣的調整,比如debug_backtrace() .

整型處理機制修改

一、無效八進制數字會報編譯錯誤

無效的八進制數字(包含大于7的數字)會報編譯錯誤,比如下面的代碼會報錯:

$i = 0781; // 8 is not a valid octal digit!

[點擊并拖拽以移動]

老版本的PHP會把無效的數字忽略。

二、位移負的位置會產生異常

var_dump(1 >> -1); // ArithmeticError: Bit shift by negative number

三、左位移如果超出位數返回0

var_dump(1 << 64); // int(0)

老版本的PHP運行結果和cpu架構有關系。比如x86會返回1。

四、右位移超出會返回0或者-1.

var_dump(1 >> 64); // int(0)

var_dump(-1 >> 64); // int(-1)

字符串處理機制修改

一、含有十六進制字符的字符串不再視為數字

含有十六進制字符的字符串不再視為數字,也不再區別對待。比如下面的代碼:

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 字符。

實例

printf('%x', IntlChar::CODEPOINT_MAX);

echo IntlChar::charName('@');

var_dump(IntlChar::ispunct('!'));

?>

以上程序執行輸出結果為:

10ffff

COMMERCIAL AT

bool(true)

希望本文所述對大家PHP程序設計有所幫助。

總結

以上是生活随笔為你收集整理的php7 字符串,php7 参数、整形及字符串处理机制修改实例分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。