За последние 24 часа нас посетили 22723 программиста и 1259 роботов. Сейчас ищут 696 программистов ...

Задать цвет тексту

Тема в разделе "Прочие вопросы по PHP", создана пользователем ALFRED, 29 дек 2020.

  1. ALFRED

    ALFRED Новичок

    С нами с:
    28 дек 2020
    Сообщения:
    34
    Симпатии:
    0
    Здравствуйте. такой вопрос:
    Получаю статус сайта
    <?php
    $fp = @fsockopen("site.ru", 1234);

    if (!$fp) {
    echo "<b><font color='red'> Оффлайн</font></b>";
    } else {
    echo "<b><font color='green'> Онлайн</font></b>";
    }
    ?>
    но так прокатывает для html
    изменил в php одной строкой

    $statserv = @fsockopen("site.ru", 1234) ? 'online' : 'offline';

    соответственно по результату получаю текст онлайн или оффлайн
    переменная $statserv будет прорисовываться в рисунок
    $bg->annotateImage($draw, $statserv_text_pixel_x, $statserv_text_pixel_y, 0, $statserv);

    прошу помочь как $statserv задать цвет
     
  2. ALFRED

    ALFRED Новичок

    С нами с:
    28 дек 2020
    Сообщения:
    34
    Симпатии:
    0
    забыл упомянуть, цвет конечно назначается, но он в моем случае один, независимо от результата
    онлайн или оффлайн, а хотелось бы чтоб различалось. Вот так назначаю цвет.
    $draw->setFillColor("rgb(".$statserv_font_color.")");
     
  3. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    738
    Адрес:
    Татарстан
    ну так задай этой переменной цвет так-же в зависимости от $statserv
     
  4. ALFRED

    ALFRED Новичок

    С нами с:
    28 дек 2020
    Сообщения:
    34
    Симпатии:
    0
    так он назначен, только одним цветом, признаться как сделать двумя не знаю
    PHP:
    1. $statserv_font_color = '0,0,0';
    не могли бы вы показать как будет верно
     
    #4 ALFRED, 29 дек 2020
    Последнее редактирование: 29 дек 2020
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    738
    Адрес:
    Татарстан
    значит до текста догадались, а с цветом никак??? ))) то же самое ... только второй раз лучше не дергать сайт, а на основании statserv
    PHP:
    1.  $statserv_font_color = ($statserv == 'on') ? '0,0,0' : '10.100.200';
     
  6. ALFRED

    ALFRED Новичок

    С нами с:
    28 дек 2020
    Сообщения:
    34
    Симпатии:
    0
    не изменился цвет при отключении сервера
    $statserv_font_color = ($statserv == 'on') ? '160,0,0' : '40,120,0';
    https://vk.com/vorkuta_commfort
    оффлайн должен быть красным
     
  7. ALFRED

    ALFRED Новичок

    С нами с:
    28 дек 2020
    Сообщения:
    34
    Симпатии:
    0
    сработало когда оставил пустое значение $statserv_font_color = ($statserv == ' ') ? '160,0,0' : '40,120,0';
    так верно будет?
    ps поспешил, не меняет, становится красным, при включении сервера красным горит уже онлайн
     
    #7 ALFRED, 30 дек 2020
    Последнее редактирование: 30 дек 2020
  8. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    738
    Адрес:
    Татарстан
    Вам виднее, но надо понимать что и за чем по порядку ставить. Какбэ понятно что цвет определить надо после задания текста
     
  9. ALFRED

    ALFRED Новичок

    С нами с:
    28 дек 2020
    Сообщения:
    34
    Симпатии:
    0
    $statserv = @fsockopen("192.168.1.1", 1234) ? 'online' : 'offline';

    выводит это все так:
    $draw->setFillColor("rgb(".$statserv_font_color.")");

    настройки такие:
    $statserv_font_color = ($statserv == 'on') ? '160,0,0' : '40,120,0';

    первое значение - красный, второе зеленый
    при доступности адреса как положено online - зеленый
    отключаю сервер (порт не доступен) offline - все равно зеленый
    так как все таки правильно будет
     
  10. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    738
    Адрес:
    Татарстан
    блин.. ну неужели даже чуточку подумать никак?
    но не посмотрел я статусы какие у вас... но понятно же
    PHP:
    1. $statserv_font_color = ($statserv == 'online') ? '160,0,0' : '40,120,0';
     
  11. ALFRED

    ALFRED Новичок

    С нами с:
    28 дек 2020
    Сообщения:
    34
    Симпатии:
    0
    отключил сервер, надпись на зеленом offline
    не хочет он краснеть ))
     
  12. ALFRED

    ALFRED Новичок

    С нами с:
    28 дек 2020
    Сообщения:
    34
    Симпатии:
    0
    на другом форуме посоветовали
    PHP:
    1. $statserv_font_color = ($statserv === 'online') ? '160,0,0' : '40,120,0';
    тоже не помогло
     
  13. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    738
    Адрес:
    Татарстан
    полностью код покажите
     
  14. ALFRED

    ALFRED Новичок

    С нами с:
    28 дек 2020
    Сообщения:
    34
    Симпатии:
    0
    проверяю порт
    PHP:
    1. $statserv = @fsockopen("192.168.1.10", 1234 ? 'online' : 'offline';
    совмещаю с обложкой
    PHP:
    1. if($view_statserv){
    2.     $draw->setFont(BASEPATH."/font/".$font_statserv);
    3.     $draw->setTextAlignment(Imagick::ALIGN_LEFT);
    4.     $draw->setFontSize($statserv_font_size);
    5.     $draw->setFillColor("rgb(".$statserv_font_color.")");
    6.     $bg->annotateImage($draw, $statserv_text_pixel_x, $statserv_text_pixel_y, 0, $statserv);
    7. }
    настройки
    [
    PHP:
    1. $statserv_font_size = 24;
    2. $statserv_font_color = ($statserv === 'online') ? '160,0,0' : '40,120,0'; // Цвет текста статуса сервера
    3. $statserv_text_pixel_x = 405; // Координаты по оси Х
    4. $statserv_text_pixel_y = 184; // Координаты по оси Y
     
  15. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    738
    Адрес:
    Татарстан
    И в каком месте этих кусков! А не целого кода у вас цвет определяется?

    Последовательность какая???
     
  16. ALFRED

    ALFRED Новичок

    С нами с:
    28 дек 2020
    Сообщения:
    34
    Симпатии:
    0
    подсказали такой вариант и он работает
    PHP:
    1. if(@fsockopen("192.168.1.10", 1234)) {
    2.     $statserv = 'online';
    3.     $statserv_font_color = '40,120,0';
    4. } else {
    5.     $statserv = 'offline';
    6.     $statserv_font_color = '160,0,0';
    7. }
    а можно этот код в одну строку сделать?
     
  17. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    738
    Адрес:
    Татарстан
    нет... вам нельзя...
    вы и этот то код не понимаете.....
     
  18. ALFRED

    ALFRED Новичок

    С нами с:
    28 дек 2020
    Сообщения:
    34
    Симпатии:
    0
    Если от одного условия зависят две переменные, то нечего мудрить:

    PHP:
    1. if(@fsockopen(...)) {
    2.     $status = 'on';
    3.     $color = 'green';
    4. } else {
    5.     $status = 'off';
    6.     $color = 'red';
    7. }
    это я ваш пример приводил на другом форуме, и там не говорили вам нельзя
    --- Добавлено ---
    Прошелся по форуму ваших ответов, ваш последний не оригинальный. Не сомневаюсь в ваших познаниях, но помочь без излишнего ... можно было бы. Не все на земле программисты, вы же тоже в другой области можете задавать вопросы.
    С наступающим всех! Всего доброго!
     
  19. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    738
    Адрес:
    Татарстан
    С наступающим! Сорян если обидел....
    но когда по три раза просишь выложить ВЕСЬ код а не произвольные куски, которые непонятно как расположены хронологически - нервы не выдерживают ))))

    Ибо разместили не в разделе "Для новичков" или "Сделайте за меня", поэтому подразумевалось что адекватно минимум знаете/понимаете

    PHP:
    1. $statserv = @fsockopen("192.168.1.10", 1234 ? 'online' : 'offline';
    2. $statserv_font_color = ($statserv === 'online') ? '160,0,0' : '40,120,0';
    Надо было вот в такой последовательности....
     
  20. ALFRED

    ALFRED Новичок

    С нами с:
    28 дек 2020
    Сообщения:
    34
    Симпатии:
    0
    я выше писал, что так не прокатило
    PHP:
    1. $statserv_font_color = ($statserv === 'online') ? '160,0,0' : '40,120,0';
    остановился на версии которую предложили на другом форуме, вроде работает
    спасибо за терпение и с новым годом
    --- Добавлено ---
    есть конечно еще один вопрос, вот получаю я направление ветра с openweathermap
    PHP:
    1. $deg=$weather->wind->deg; //получаем направление ветра в градусах
    указав переменную $deg я получу лишь цифры в виде например 165
    есть скрипт
    PHP:
    1. function getCardinalDirection(angle) {
    2.     const directions = ['↑ N', '↗ NE', '→ E', '↘ SE', '↓ S', '↙ SW', '← W', '↖ NW'];
    3.     return directions[Math.round(angle / 45) % 8];
    4. }
    возможно надо и это
    PHP:
    1. $winds = Array(
    2.    'N'=>'С', 'NNW'=>'С/СЗ', 'NW'=>'СЗ', 'WNW'=>'З/СЗ',
    3.    'W'=>'З', 'WSW'=>'З/ЮЗ', 'SW'=>'ЮЗ', 'SSW'=>'Ю/ЮЗ',
    4.    'S'=>'Ю', 'SSE'=>'Ю/ЮВ', 'SE'=>'ЮВ', 'ESE'=>'В/ЮВ',
    5.    'E'=>'В', 'ENE'=>'В/СВ', 'NE'=>'СВ', 'NNE'=>'С/СВ'
    6.    );
    как мне правильно совместить чтобы при написании
    PHP:
    1. if($view_deg){
    2.     $draw->setFont(BASEPATH."/font/".$font_deg);
    3.     $draw->setTextAlignment(Imagick::ALIGN_CENTER);
    4.     $draw->setFontSize($deg_font_size);
    5.     $draw->setFillColor("rgb(".$deg_font_color.")");
    6.     $bg->annotateImage($draw, $deg_text_pixel_x, $wind_text_pixel_y, 0, $deg);
    7. }
    $deg в итоге равнялся ↑ С
     
  21. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    738
    Адрес:
    Татарстан
    не надо совмещать...

    PHP:
    1. const directions = ['↑ N', '↗ NE', '→ E', '↘ SE', '↓ S', '↙ SW', '← W', '↖ NW'];
    Вместо N ,NE итд ... замените русскими буквами и используйте эту функцию
     
  22. ALFRED

    ALFRED Новичок

    С нами с:
    28 дек 2020
    Сообщения:
    34
    Симпатии:
    0
    а как его склеить с $deg, просто вставит переменную вместо angle?
     
  23. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    738
    Адрес:
    Татарстан
    Получить результат работы данной функции с вашим параметром.
     
  24. ALFRED

    ALFRED Новичок

    С нами с:
    28 дек 2020
    Сообщения:
    34
    Симпатии:
    0
    по первому примеру не получилось, константа вызвала ошибку
    сделал иначе , но получил лишь 200 градусов вместо направления
    PHP:
    1. function getWindDirection($deg)
    2. {
    3.     $deg = (string)$deg;
    4.     $deg_direction = array('s'=>'↑ ю','n'=>'↓ с','w'=>'→ з','e'=>'← в','sw'=>'↗ юз','se'=>'↖ юв','nw'=>'↘ сз','ne'=>'↙ св');
    5.     return $deg_direction[$deg];
    6. }
    почему не правильно? или он просто берет переменную которую получает изначально?

    PHP:
    1. $url = "http://api.openweathermap.org/data/2.5/weather?id=".$cityId."&lang=".$lang."&units=".$units."&APPID=" . $apiKey;
    2. // делаем запрос к апи
    3. $contents = file_get_contents($url);
    4. $weather=json_decode($contents);
    5.  
    6. $deg=$weather->wind->deg; //получаем направление ветра в градусах
    PHP:
    1. if($view_deg){
    2.     $draw->setFont(BASEPATH."/font/".$font_deg);
    3.     $draw->setTextAlignment(Imagick::ALIGN_CENTER);
    4.     $draw->setFontSize($deg_font_size);
    5.     $draw->setFillColor("rgb(".$deg_font_color.")");
    6.     $bg->annotateImage($draw, $deg_text_pixel_x, $deg_text_pixel_y, 0, $deg);
    7. }
    $bg->annotateImage($draw, $deg_text_pixel_x, $deg_text_pixel_y, 0, $deg);
     
  25. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    738
    Адрес:
    Татарстан
    нда.. тяжело
    надо понимать что такое функция и как ее использовать

    если есть функция getWindDirection() то для того чтобы получить ее результат нужно ее вызвать с параметром
    параметр - это то что передается в функцию

    в вашем случае
    PHP:
    1. $a = getWindDirection($deg);
    $a - переменная которая получит результат работы функции, $deg - ваше начальное значение, для которого вы вычисляете текстовое представление, в самой функции параметр может называться хоть как, можно например $angle