Yahoo 知識+ 將於 2021 年 5 月 4 日 (美國東岸時間) 停止服務,而 Yahoo 知識+ 網站現已轉為僅限瀏覽模式。其他 Yahoo 資產或服務,或你的 Yahoo 帳戶將不會有任何變更。你可以在此服務中心網頁進一步了解 Yahoo 知識+ 停止服務的事宜,以及了解如何下載你的資料。
請問怎麼判斷輸入的是不是16進位數字
$num=$_POST['num'];
取得 $num 後
如果 $num 是 16 進位數字就格式化成 6 位數
例如:
123456
098765
0000FF
FFFFFF
超過 6 位數截頭或去尾都可以
如果 $num 不是 16 進位數字
例如:文字
就把 $num 變成 000000
只要符合
0123456789abcdefABCDEF
都可以
不用管它實際上是十進位或十六進位
如果 $num 只有 1 個字元
寫一個判斷式
當 $num 是 0123456789abcdefABCDEF 其中一個字元
則 $num 不變
否則 $num = 0
解決了
請 Chris 大移駕到回答區
以後有 PHP 問題還希望能跟您討論
1 個解答
- inthisx_00Lv 510 年前最愛解答
$a = 1234; // decimal number
$a = -123; // a negative number
$a = 0123; // octal number (equivalent to 83 decimal)
$a = 0x1A; // hexadecimal number (equivalent to 26 decimal)
除非使用者輸入 0x這種模式才會是十六進位
若輸入 11 可以是十進位 也可以是十六進位裡的17
必須以0x做判斷 否則十進位 十六進位都使用數字模式 是看不出來的
2011-12-10 21:35:13 補充:
假設123是$num=$_POST['num'];
$hex=dechex("123");
echo str_pad($hex,6,'0',STR_PAD_LEFT);
2011-12-11 20:18:24 補充:
有解決了嗎......
2011-12-11 21:43:46 補充:
假設123是$num=$_POST['num'];
$hex=dechex("123");
echo str_pad($hex,6,'0',STR_PAD_LEFT);