2011-04-14 197 views
1

我的$_POST值包含css友好的十六進制顏色值,例如:#ffffff。爲了使它對ColorJizz庫更友好,我應該使用十六進制整數值。下面的代碼無法正常工作。如果我使用硬編碼值替換$color_hex變量,例如:0xffffff,它可以工作。php,轉換爲十六進制整數

include('colorjizz.php'); 
$color_hex = '0x' . substr($_POST['color'], 1); 
$color = new Hex($color_hex); 

這很可能是一個很小白級別的問題,但打我的頭在牆上了相當幾個小時後,我會的任何意見表示感謝。謝謝。

+1

ColorJizz可以對代碼進行託管。 google.com,但它不是「Google's」套餐。 – drudge 2011-04-14 00:49:05

+1

你可以把'(int)'放在前面嗎? – alex 2011-04-14 00:49:46

+0

這個例子中'$ color_hex'的實際輸出是多少?我不能看到它的問題,假設你確實得到了一個有效的6位十六進制值'$ _POST ['color']',#號符號字符。 – 2011-04-14 00:49:51

回答

1

「十六進制整數」 沒有多大意義。十六進制表示一個數字(因此是一個字符串),而整數值表示數字的數字格式。

如果你想要的號碼,快速谷歌搜索發現hexdec

$color = hexdec(substr($_POST['color'], 1)); 

這似乎忽略了領先的「垃圾」,所以你甚至可以用

$color = hexdec($_POST['color']); 
+0

謝謝你的回覆ikegami。哦,我已經嘗試了十六進制方法,但因爲它沒有輸出一個前面的「0x」的值,例如「0xFFFFFF」,我雖然不適合。但它確實接受它。現在它適用於此。大!謝謝。 – Dusty 2011-04-15 00:53:46

+0

@Tuomas,'0xFFFFFF'是產生數字16,777,215的數字*文字*(一段*代碼*)。 'hexdec('FFFFFF')'是產生相同數字的另一段代碼。 *變量*中的字符串「0xFFFFFF」與代碼中的「0xFFFFFF」大不相同。 – ikegami 2011-04-15 18:17:37

0

在PHP中,十六進制整數和十進制整數的數據類型是相同的;能夠在源代碼中輸入0xDEAD只是語法糖。因此,你可以使用intval()的形式輸入從字符串轉換爲常規PHP整數

$color_hex = intval(substr($_POST['color'], 1), 16); 

最後一個參數,16,指定輸入字符串爲十六進制。

1

如果包含數字的十六進制表示的字符串,你想擁有它,你必須從十六進制轉換爲十進制整數一個。如果我的問題正確。

$dec = hexdec("ff0000"); 

http://php.net/hexdec