Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Как получить цвет слова =)
Arh  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2110
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев, 8 дней
Карма: 70




Хочу подсвечивать фон, на основе слова или его первой буквы (в принципе неважно)
На данный момент использую функцию где есть массив в котором в качестве ключей лежат буквы алфавита, а в качестве значений их цвета.
Получаю первую букву слова, по ней нахожу нужный цвет.
Но тут задался мыслью как получать цвет независимо от алфавита?
К чему привязаться? К количеству байт в слове и количеству цветов в массиве или к каким то кодам символа или еще к чему.
В итоге должно получится что то вроде такой функции.

echo colorWord('Слово', ['blue', 'red', 'purple']); //Допустим всегда вернёт red
echo colorWord('Word', ['blue', 'red', 'purple']); //Допустим всегда вернёт purple


То есть там даже необязательно должен лежать цвет, просто по какому то алгоритму на основе первого входного параметра, возвращается значение массива второго параметра.


--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









function colorWord($word, $colors) {
return $colors[abs(intval(hexdec(hash('crc32', $word)), 16)) % count($colors)];
}
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arh  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2110
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев, 8 дней
Карма: 70




Guest
Сильно) Спасибо потестирую.


--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









На всяк случай поясню что я тут имел в виду.

Идея очень простая: к строке $word применяем какую-нибудь хеш-функцию (какую-нибудь из коробки, или велосипед какой-нибудь) что бы в итоге получилось число. Ну а потом просто делим это число по модулю на count($colors).

Хеш-функция здесь место несколько узкое. Возможно нужно будет "подкрутить" где-то: дополнительно взять какой-нибудь корень из числа, натуральный логарифм, ...
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arh  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2110
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев, 8 дней
Карма: 70




Guest
Да я вижу идею) сам думал делать что подобное, только деление по модулю в голову не пришло, поэтому затупил на этапе сдвига ключей в массиве, а тут ты с процентом пришел smile.gif


--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса