Мне нужна помощь, чтобы найти в переменной что-то, что не всегда одинаково, а затем поместить это в другую переменную. Я знаю, что то, что я ищу, имеет 5 косых черт, оно начинается с steam: // joingame / 730 /, а после последнего слэша идет 17 чисел.

Изменить: он не заканчивается косой чертой, поэтому мне нужно посчитать 17 чисел после пятой косой черты

-2
Bob123 3 Сен 2016 в 23:32

4 ответа

Лучший ответ

Спасибо за помощь, я нашел решение проблемы. Я собираюсь опубликовать раскомментированную версию кода на pastebin, потому что я не мог заставить работать здесь код saple.

код

0
Bob123 3 Сен 2016 в 23:03

Предположим, что то, что вы ищете, выглядит примерно так:

steam://joingame/730/11111111111111/

Тогда вы можете использовать explode() как простое решение:

$gameId = explode('/', 'steam://joingame/730/11111111111111/');

var_dump($gameId[4]);

Или вы можете использовать регулярное выражение как более сложное решение:

preg_match('|joingame/730/([0-9]+)|', 'steam://joingame/730/11111111111111/', $match);

var_dump($match[1]);
0
Dragony 3 Сен 2016 в 20:36

Следуя тому, что сказал DragonSpirit

Я изменил код, чтобы строка выглядела как

Steam: // joingame / 730/11111111111111

Или

Steam: // joingame / 730/11111111111111 /

$str = 'steam://joingame/730/11111111111111/';  
$rstr = strrev( $str ); // reverses the string so it is now like /1111111111...
if($rstr[0] == "/") // checks if now first (was last ) character is a /
{
    $nstr = substr($str, 0, -1); // if so it removes the / 
}
else
{
    $nstr = $str; // else it dont
}

$arr = explode("/", $nstr) ;
$game_id = end($arr);
0
R1CH101 3 Сен 2016 в 21:07

Это разбивает строку на массив, а затем возвращает последний элемент как game_id. Неважно, сколько косых черт. Он всегда будет возвращать последний.

$str = 'steam://joingame/730';  
$arr = explode("/", $str) ;
$game_id = end($arr);
0
DragonSpirit 3 Сен 2016 в 20:48