【发布时间】:2016-09-03 20:32:18
【问题描述】:
我需要帮助在一个变量中找到并不总是相同的内容,然后将其放入另一个变量中。 我知道我要找的有 5 个斜线,它以 steam://joingame/730/ 开头,最后一个斜线之后有 17 个数字。
编辑:它不以斜线结尾,这就是为什么我需要在第五个斜线之后计算 17 个数字
【问题讨论】:
-
正则表达式会帮助你。开始学习。
我需要帮助在一个变量中找到并不总是相同的内容,然后将其放入另一个变量中。 我知道我要找的有 5 个斜线,它以 steam://joingame/730/ 开头,最后一个斜线之后有 17 个数字。
编辑:它不以斜线结尾,这就是为什么我需要在第五个斜线之后计算 17 个数字
【问题讨论】:
假设您要查找的内容如下所示:
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]);
【讨论】:
\d{17},我也认为他想要匹配组中的整个链接,并且您需要使用\/ 转义/。而这里的正则表达式是最好的解决方案,而且并不复杂。你的回答是迄今为止最好的,干得好:)
这会将字符串拆分为一个数组,然后将最后一个元素作为 game_id 返回。多少个斜线都没关系。它总是返回最后一个。
$str = 'steam://joingame/730';
$arr = explode("/", $str) ;
$game_id = end($arr);
【讨论】:
按照龙魂所说的继续
我修改了那里的代码,所以字符串看起来像
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);
【讨论】:
感谢您的帮助,我已经找到了解决问题的方法。我将在 pastebin 上发布未注释的代码版本,因为我无法让代码简单的东西在这里工作。
【讨论】: