За последние 24 часа нас посетили 17586 программистов и 1314 роботов. Сейчас ищут 1696 программистов ...

preg_match_all и hex цвет

Тема в разделе "Регулярные выражения", создана пользователем tyshka, 2 авг 2016.

  1. tyshka

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

    С нами с:
    4 фев 2015
    Сообщения:
    21
    Симпатии:
    0
    помогите разобраться как исправить чтобы цветовой hex код обрабатывался

    регулярка

    preg_match_all( '#\[tab color="([^"]+)"\]([^\[]*)\[/tab\]#Ui', $content_tab, $matches );

    строка

    [tab color="#fff000"] [/tab]

    не пропускает цифры...
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    /\[tab color="(#[0-9a-f]{6})"\]([^\[]*)\[\/tab\]/i
     
  3. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Есть специальные библиотеки для парсинга bbcode если что.
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    лучше наверное решетку вынести за скобки, дабы сразу ловить сам код. Удобняк.
     
  5. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    А ему нужно может, чтобы было с решеткой, чтобы сразу вставить, а не только ловить :) Удобнее.
     
  6. tyshka

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

    С нами с:
    4 фев 2015
    Сообщения:
    21
    Симпатии:
    0
    Спасибо, но не помогло... не понимаю почему,

    если цветовой код имеет окончание буквенное [tab color="#fff00a"] [/tab] - работает и мой вариант и предложенный runcore если окончание цифра [tab color="#fff000"] [/tab] - не работают оба варианта, подскажите в чем может быть проблема
     
  7. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Только, что проверил:
    PHP:
    1. $str ='[tab color="#fff000"] [/tab]';
    2. preg_match_all('/\[tab color="(#[0-9a-f]{6})"\]([^\[]*)\[\/tab\]/i', $str, $m);
    3. print_r($m[1][0]); // #fff000
    Возможно у вас где - то в другом проблема, смотрите внимательнее.
    Нужно видеть, что вы делаете там в коде.
     
  8. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    tyshka нравится это.
  9. tyshka

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

    С нами с:
    4 фев 2015
    Сообщения:
    21
    Симпатии:
    0
    Спасибо отличная тестовая площадка, не знал о ее существовании :(

    Это на cms WordPress - шорткоды... Ошибок php в режиме дебагера не выдает...
    Уже все перекопал, в бубен бил, зановески поджигал... не помогает :)
     
  10. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @tyshka вручную отладку делай http://phpfaq.ru/debug можешь сам писать в файл результат var_dump
     
  11. tyshka

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

    С нами с:
    4 фев 2015
    Сообщения:
    21
    Симпатии:
    0
    Да это все включено... Просто в WordPress есть удобная функция для отладки, обычно помогает, но скорее всего это во внутреннем функционале WordPress - "автоматическое форматирование текста" - видимо там собака зарыта
     
  12. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @tyshka так всё дело в том, что ты не читаешь ссылки которые тебе дают. Там прям проверка на таких, кто не читает до конца и не вникает в суть.
    Вот ещё одна попытка, прочитай всю, но можно 2-3 раза перечитать разделы: "Отладка и поиск ошибок в своем алгоритме", "Пример отладки".
     
  13. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    когда мне это надоело я запилил движок https://php.ru/forum/threads/pinpie.57619/
     
  14. tyshka

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

    С нами с:
    4 фев 2015
    Сообщения:
    21
    Симпатии:
    0
    Да сейчас проверил свое предположение что это "автоформатирование" чудит - так и есть отключил функцию wpautop() в WordPress
    и все заработало... Нужно придумывать очередные "костыли"...