94908


PHP7.4で 下記エラーメッセージが表示されるのですが、どういう意味ですか？

> Deprecated: Invalid characters passed for attempted conversion, these have
> been ignored in hexdec  
>  Deprecated: Invalid characters passed for attempted conversion, these have
> been ignored in

下記コード辺りに問題があるようにも思われのですが、どう修正すればよいですか？

[code]

    $rgb["red"] = hexdec(substr($colorcode, 0, 2));
    
[/code]


CC BY-SA 4.0
2023-05-19T04:28:16.860
94906
2023-05-19T08:35:33.047
2023-05-19T08:35:33.047
7886
7886
question
php
PHP7.4で Deprecated: Invalid characters passed for attempted conversion, these have been ignored in hexdec


今回に限らないですが、まずはエラーメッセージや関数名で検索しましょう。

`hexdec` の引数に16進数を表す値以外を渡した場合に表示される警告のようです。

[hexdec](https://man.plustar.jp/php/function.hexdec.html)

> `hexdec()` は、16 進数以外の文字を一切無視します。 PHP 7.4.0 以降では、無効な文字を与えることは推奨されません。
>
> **変更履歴**
>
> バージョン | 説明  
> ---|---  
> 7.4.0 | 無効な文字を与えると、非推奨の警告が出るようになりました。  
> 結果は不正な文字がなかったかのように計算されます。  
  
[How to Convert a Hexadecimal String to an Integer in
PHP?](https://www.designcise.com/web/tutorial/how-to-convert-a-hexadecimal-
string-to-an-integer-in-php)

通常の使い方:

>
[code]

>     var_dump(hexdec('4D2')); // int(12345)
>     var_dump(hexdec('04D2')); // int(12345)
>     var_dump(hexdec('0x4D2')); // int(12345)
>     var_dump(hexdec('0x04D2')); // int(12345)
>  
[/code]

誤った引数を渡した場合:

>
[code]

>     // Deprecated: Invalid characters passed for attempted conversion, these
> have been ignored
>     var_dump(hexdec('foobar'));
>  
[/code]


CC BY-SA 4.0
2023-05-19T04:51:57.430
94908
2023-05-19T04:51:57.430
3060
94906
answer