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

HooLIGUN

MatchMaking CS:S / RGMIX.ru
Сообщения
1,064
Реакции
267
В связи с вводом нового 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";
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #2
HooLIGUN, \[ и \]

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

Тоесть так короче
PHP:
$steamID_U = "/^\[U:[01]:[0-9]{3,12}\]$/i";

: не знаю нужно ли экранировать
 

HooLIGUN

MatchMaking CS:S / RGMIX.ru
Сообщения
1,064
Реакции
267
Вроде заработало, спасибо :)
 

HooLIGUN

MatchMaking CS:S / RGMIX.ru
Сообщения
1,064
Реакции
267
Столкнулся сегодня с проблемой, что бывают стимы как STEAM_0:1:XXX , так и STEAM_0:0:XXX
Как узнать 1 или 0 при конвертировании из U:1:XXX ?

C-подобный:
$owner =~ s!\[U:1:(\d+)\]!'STEAM_0:'.($1 % 2).':'.int($1 / 2)!eg;
 
Последнее редактирование:

rom4s

Не понимает, что происходит  
Сообщения
214
Реакции
194
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
 
Сверху Снизу