За последние 24 часа нас посетили 23438 программистов и 1359 роботов. Сейчас ищут 682 программиста ...

Как отловить ошибку при генерировании символа?

Тема в разделе "PHP для новичков", создана пользователем miltorg, 16 янв 2020.

  1. miltorg

    miltorg Активный пользователь

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    Как отловить ошибку при генерировании символа?

    Например &#128746 - эта строка не нужна вообще - у меня никакой символ не генерируется



    Спасибо.
     

    Вложения:

  2. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    @miltorg, перефразирую вопрос.
    Как определить наличие символа в используемом шрифте?
     
  3. miltorg

    miltorg Активный пользователь

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    Я не знаю как точно сформулировать.
    Возможно что вы правы.
    --- Добавлено ---
    https://unicode-table.com/ru/1F6EA/

    У меня никакого самолёта тут нет.
    Как "поиметь" самолёт или как понять что его нет?
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.568
    Симпатии:
    1.757
    Приложение "Таблица символов" в винде, если на винде сидите
    --- Добавлено ---
    В пост, кстати, тоже не получилось вставить :) Видимо, в дефолтном шрифте нету. или отфльтровывает форум при записи в базу
     
  5. miltorg

    miltorg Активный пользователь

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    ????
    Я хочу в php выводить код символа и сам символ. Вывожу генерацией. Выводится. Но и выводится куча пустых мест. Пустые места - не нужны.
    Как это отловить в php или в js?
    вы правда - не понимаете?
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.078
    Симпатии:
    1.237
    Адрес:
    там-сям
    А чего вы сразу так возбуждаетесь? Вам пытаются помочь. Извините, что не на 100% вас удовлетворили.
     
  7. miltorg

    miltorg Активный пользователь

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    Браузер ведь выводит "стандартную заглушку" для несуществующих символов
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.078
    Симпатии:
    1.237
    Адрес:
    там-сям
    Возьми шрифт, который поддерживает все символы. Может Arial Unicode.
    В конце концов загляни в инспектор браузера на странице unicode-table.com, узнай что они используют.
    --- Добавлено ---
    1. шрифт, 2. CSS для того чтобы браузер о нём узнал.
     
  9. miltorg

    miltorg Активный пользователь

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    Мне не нужно "хотение помочь не разбираясь в сути" - оно отнимает ещё больше времени.
    --- Добавлено ---
    Вы тоже не понимаете что я хочу?

    Я хочу в php выводить код символа и сам символ. Вывожу генерацией. Выводится. Но и выводится куча пустых мест. Пустые места - не нужны.
    Как это отловить в php или в js?
    вы правда - не понимаете?
     
  10. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.078
    Симпатии:
    1.237
    Адрес:
    там-сям
    Могу подсказать куда тебе надо идти со своим "мне надо". Будь менее токсичен или проваливай.
    --- Добавлено ---
    Читай внимательно. Ты получил ответ.
    --- Добавлено ---
    Ты не уникален в своём программистском желании "понять, что его нет". Но правильный ответ таки: не надо понимать, не надо усложнять, надо просто сделать так, чтобы символ отобразился. Для этого надо использовать подходящий шрифт.

    Чуть-чуть оффтопик:
    Важно знать, что MySQL может не суметь сохранить такой символ. Традиционно utf8 character set состоит из максимум 3 байтовых символов, этого хватит на русский язык, но не на эмодзи. Я думаю на этом форуме эмодзи отфильтровываются именно поэтому.
    Но в современных версиях доступен utf8mb4, его хватит на всё.
     
  11. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.568
    Симпатии:
    1.757
    Пустые или не пустые - зависит от используемого шрифта, и только. То, что оно есть в Unicode, не значит, что его врисовали в конкретный шрифт, которым пользуется браузер :) Благо, это можно легко исправить. А можно искать, как разбирать таблицу символов шрифта из php
     
  12. miltorg

    miltorg Активный пользователь

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    С версии 5.5.3 - то есть с 2011 года.
    Как минимум 3 года назад я писал код именно для обхода этого нюанса.
    Написал.
     
  13. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.836
    Симпатии:
    741
    Адрес:
    Татарстан
    это не ошибка

    объединяя все ответы что были ранее:
    - не видите, потому - что не задана кодировка, в которой эти символы есть
    - в используемом шрифте - нет такого символа (шрифт может быть как подгружаемый, так и тот что у вас на компьютере установлен)
    - не во всех кодировках можно их сохранить (только в utf8mb4)

    Что из этого вам непонятно?
     
  14. miltorg

    miltorg Активный пользователь

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    Мне всё понятно. И было понятно.
    Внимательно читайте заголовок темы:

    Как отловить ошибку при генерировании символа?

    не нравится слово ошибка?
    Ок:

    Как отловить отсутствие символа при генерировании символа?

     
  15. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.836
    Симпатии:
    741
    Адрес:
    Татарстан
    Для тех кто в танке - символы не отсутствуют!!! Они просто не могут быть отображены конкретно например на вашем компе, а на другом с шрифтом нужным - будет видно...
    И php, и js не знают, не могут знать - отображаются ли символы на вашем экране

    Чтоб такой проблемы не было, находят шрифт в котором есть все что нужно, и принудительно его загружают через css
     
  16. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @ADSoft, ты всё испортил(((
     
  17. miltorg

    miltorg Активный пользователь

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    Почему вы так считаете? Браузер для всех несуществующих символов выводит одну и туже картинку.
     
  18. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @ADSoft, ан нет шоу продолжается)))
     
    TeslaFeo нравится это.
  19. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    Такие страсти)) я даже Милторга временно достал из персонального бана чтобы посмотреть о чем речь :)

    Как мне видится, правильный ответ на исходный вопрос: НИКАК

    Может и было бы как-нить можно, если PHP запустить на компьютере клиента с правами администратора :)

    Да даже и в этом случае я затрудняюсь навскидку ответить как это можно сделать.

    Понять. Простить.
     
  20. miltorg

    miltorg Активный пользователь

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    Один иностранец предлагает измерять ширину на js искомого и эталонного элементов - наверное правда решения нет.
    Ну и фиг с ним.
    --- Добавлено ---
    Но тут очень много людей написало - что решение есть. Правда не привели ни строчки кода.
     
  21. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.836
    Симпатии:
    741
    Адрес:
    Татарстан
    1не увидел ни одного -" что есть решение"
    Есть решение как сделать чтоб было видно всегда.
    как вариант крайнего изврата - формировать например в php gd/imagick картинку - пустую с выводом символа как текста в картинку - и дальнейшее сравнение картинки с эталонной пустой. Но профита ноль, ибо чтоб вывести что-то в графич режиме - нужно вообще явно загрузить шрифт, а если явно - то априори мы и так знаем - есть там эти символы или нет

    а вообще озвученная задача - крайне необычная и мне кажется - практически ненужная
     
  22. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    ну, не факт )

    например, у меня в 7 винде раньше символ рубля не отображался, пока я патч не поставил

    ни со шрифтом, ни без шрифта, вообще никак, просто пустой квадрат

    и в общем-то это могло иметь значение для UI/UX с точки зрения вебдева

    но как такое можно отмониторить - я хз..
     
  23. miltorg

    miltorg Активный пользователь

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    На другом форуме, где не стали сразу писать - что задача решена - по прежнему советуют измерение ширины с этолоном
    Плюс насоветовали подключить в CSS все мыслемые и немыслеммые шрифты. А как это сделать - не написали.
    --- Добавлено ---
    Самолётик высвечивается:

    HTML:
    1.  
    2. @font-face {
    3. font-family: "Universalia";
    4. src: url("https://cdn.glitch.com/348d485e-4ba6-4841-a41e-5865874b2d66/u1f400.woff");
    5. unicode-range: U+1F400-1F6FF;
    6. }
    7.  
    8. .universalia {
    9. font: 500% Universalia;
    10. }
    11.  
    12.  
    13. <span class="universalia">&#128746;</span>
     
  24. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.836
    Симпатии:
    741
    Адрес:
    Татарстан
    это не точно, может быть совпадение ширины какого либо символа с эталоном

    Вы не умеете подключать шрифты? Ниже сами же приводите пример.... диапазон просто не задавайте unicode-range: U+1F400-1F6FF; и все
     
  25. miltorg

    miltorg Активный пользователь

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    все шрифты. все. Что -то вроде: font-family: *;

    Вы всё-таки правда не понимаете, что я хочу. Оно ведь на рисунке наглядно изображено.

    Я хочу выводить для пользователей Эможды и пр. хрень из определённого диапазона - генерируется цифра и подставляется &# - в результате получаем картинки, ироглифы и пр.
    Неужели это не возможно понять с рисунка?
    --- Добавлено ---
    Вы тут пишите что я сам, за ранее должен знать есть ли у меня самолётик в шрифте или нет.

    Это как я могу за ранее знать?
    --- Добавлено ---
    кроме того, не важно, что этот самолётик с помощью моих ухищрений, выведется у меня на странице. - Важно чтоб пользователь мог взять этот символ и спокойно перенести его в ВК, например. Блин, пишу банальщину.