【问题标题】:Find a string that is not always the same [PHP]查找不总是相同的字符串 [PHP]
【发布时间】:2016-09-03 20:32:18
【问题描述】:

我需要帮助在一个变量中找到并不总是相同的内容,然后将其放入另一个变量中。 我知道我要找的有 5 个斜线,它以 steam://joingame/730/ 开头,最后一个斜线之后有 17 个数字。

编辑:它不以斜线结尾,这就是为什么我需要在第五个斜线之后计算 17 个数字

【问题讨论】:

  • 正则表达式会帮助你。开始学习。

标签: php variables steam


【解决方案1】:

假设您要查找的内容如下所示:

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]);

【讨论】:

  • 我有一个网站的代码在一个变量中,在那个变量的某个地方它说 steam://joingame/730/1234567/RANDOMNUMBERS RANDOMNUMBERS 总是十七个数字,所以第五个斜线后面的十七个数字应该成为新变量的结尾。它不以斜线结尾,这就是为什么我们需要在最后一个斜线之后计算 17 个数字。
  • @Dragony 为什么你使用 [0-9]+ 来匹配正则表达式中的数字?我建议使用\d{17},我也认为他想要匹配组中的整个链接,并且您需要使用\/ 转义/。而这里的正则表达式是最好的解决方案,而且并不复杂。你的回答是迄今为止最好的,干得好:)
  • 出于习惯,我使用 [0-9]+ 的次数更多,记住的次数更少;)如果我使用管道“|”,我不需要转义“/”作为正则表达式的分隔符。
  • @Bob123 如果您将整个网站作为一个变量,那么正则表达式就是要走的路。
【解决方案2】:

这会将字符串拆分为一个数组,然后将最后一个元素作为 game_id 返回。多少个斜线都没关系。它总是返回最后一个。

$str = 'steam://joingame/730';  
$arr = explode("/", $str) ;
$game_id = end($arr);

【讨论】:

    【解决方案3】:

    按照龙魂所说的继续

    我修改了那里的代码,所以字符串看起来像

    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);
    

    【讨论】:

      【解决方案4】:

      感谢您的帮助,我已经找到了解决问题的方法。我将在 pastebin 上发布未注释的代码版本,因为我无法让代码简单的东西在这里工作。

      code

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-10
        • 1970-01-01
        • 2013-12-16
        • 2012-10-24
        • 1970-01-01
        相关资源
        最近更新 更多