[PHP] Регулярные выражения и Steamid3

Тема в разделе "Программирование / Скриптинг", создана пользователем HooLIGUN, 11 окт 2015.

  1. HooLIGUN

    HooLIGUN

    Сообщения:
    748
    Симпатии:
    124
    В связи с вводом нового U ID, хочу сделать, чтобы мой сайт воспринимал также и этот новый формат (SteamID3 > Steamid64)
    Но у меня возникла проблема, как правильно написать регулярное выражение для этого формата, ведь теперь появились [] квадратные скобки, и правильней было бы указывать с ними (в идеале сделаю, чтобы сайт воспринимал с ними и без)
    regex без скобок:
    PHP:
    $steamID_U "/^U:[01]:[0-9]{3,12}$/i";
    а вот так не воспринимает (считает как экранирование)
    PHP:
    $steamID_U "/^[U:[01]:[0-9]{3,12}]$/i";
     
  2. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.972
    Симпатии:
    2.977
    HooLIGUN, \[ и \]

    PHP:
    \[U\:\d\:\d*\]
    Только вот тут \d* надо указать кол-во, но я хз скок их может быть

    Тоесть так короче
    PHP:
    $steamID_U "/^\[U:[01]:[0-9]{3,12}\]$/i";
    : не знаю нужно ли экранировать
     
  3. HooLIGUN

    HooLIGUN

    Сообщения:
    748
    Симпатии:
    124
    Вроде заработало, спасибо :)
     
  4. HooLIGUN

    HooLIGUN

    Сообщения:
    748
    Симпатии:
    124
    Столкнулся сегодня с проблемой, что бывают стимы как STEAM_0:1:XXX , так и STEAM_0:0:XXX
    Как узнать 1 или 0 при конвертировании из U:1:XXX ?

    Код:
    $owner =~ s!\[U:1:(\d+)\]!'STEAM_0:'.($1 % 2).':'.int($1 / 2)!eg;
     
    Последнее редактирование: 16 окт 2015
  5. rom4s

    rom4s

    Сообщения:
    100
    Симпатии:
    31
    PHP:
    $A $B 2;
     
  6. HooLIGUN

    HooLIGUN

    Сообщения:
    748
    Симпатии:
    124
    Да ладно? :-D Видимо я не выспался.
    Спасибо!
     
  7. rom4s

    rom4s

    Сообщения:
    100
    Симпатии:
    31
    PHP:
    $steam3 preg_replace("/\[U:1:(\d+)\]/""$1"$steam3);
    $A $steam3 2;
    $B intval($steam3 2);
    echo 
    "STEAM_0:".$A.":".$B;
    http://ideone.com/AkvojA