Prensipte hata gözükmüyor, gelen veride problem olabilir.
str_replaceden önce $color'u sonrasınada $hex'i ekrana basarmısınız.
giriş çıkış doğrumu onu görelim.