регулярное выражение

Discussion in 'PHP' started by Дикс, 28 Feb 2008.

  1. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    PHP:
    $data preg_replace("/(\[color=)(#[a-zA-Z0-9{6}])(\])(.*)(\[\/color\])/i""<span style='color: \${2}'>\${4}</span>"$data);
    хочу распарсить [*color=#727FFF]test[/color]
    в <span style='color: #727FFF'>test</span>
    но ничего не получается


    *про ограничения букв до F я знаю, ещё не сделал.
    помогите найти ошибку в этом выражении

    ЗЫ с удивлением обнаружил что буллетин парсит кастомный цвет :)
     
  2. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    $data = preg_replace("/\[color=#?([a-zA-Z0-9]+)\](.*)\[\/color\]/i", '<font color="$1">$2</font>', $data);
     
    #2 nc.STRIEM, 28 Feb 2008
    Last edited: 28 Feb 2008
  3. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    спасибо, только мне ещё надо учесть что комбинация из символов a-zA-Z0-9 равна шести.

    тег font deprecated ;)
     
  4. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    это делаеться заменой + на {6} НО этого делать не надо ведь цвет можно указывать как ff0000 или red
     
  5. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    да, точно. я не подумал про словесные эквиваленты.
    спасибо большое!
     
  6. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    да, кстати - [a-zA-Z0-9] надо поменять на [a-fA-F0-9]

    ведь в шестнадцатеричной системе нет букв кроме abcdef :)
     
  7. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    Red green blue white
     
  8. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    вот блин :)