【问题标题】:Extracting part of a string?提取字符串的一部分?
【发布时间】:2012-10-14 18:15:21
【问题描述】:

如何从这个字符串中提取 4?

$string = "Rank_1:1:4";

我正在尝试从 Google 的服务器获取 pagerank,最后一个值 (4) 是实际的 pagerank。

【问题讨论】:

    标签: php extract


    【解决方案1】:

    试试

    $string = "Rank_1:1:4";
    $data = explode(':',$string);
    echo end($data);
    

    编辑

    根据@MichaelHampton,如果他们稍后添加更多字段,则如下使用

    $string = "Rank_1:1:4";
    $data = explode(':',$string);
    echo $data[2];
    

    【讨论】:

      【解决方案2】:

      PHP 有很多你可以使用的字符串函数...

      变量

      $find = ":";
      $string = "Rank_1:1:4";
      

      使用substr

      echo substr($string, strrpos($string, $find) + 1);
      

      使用strrchr

      echo ltrim(strrchr($string, $find),$find);
      

      【讨论】:

      • 当字段长度为两位数时(并且可以),这将中断。
      • @Michael Hampton OP 说 rand .. 排名是 0 - 5 星
      • @Baba PageRank 的有效值是从 0 到 10 的整数。
      • @Michael Hampton,这是喜忧参半。 @Baba 回复了 Extracting part of a string? 在这种情况下是正确的答案。
      • 你们在这儿扯皮,但谁在乎呢。我希望 OP 已经得到了他/她正在寻找的答案。
      【解决方案3】:
      $pattern = '/:\d+$/';
      preg_match($pattern, $string, $matches);
      $rank = substr($matches[0],1);
      

      【讨论】:

      • 这太复杂了。它今天可能有效,但很难理解,如果有额外的字段,它就会崩溃。
      • 迈克尔我不同意。他要求最后一个值,这将始终提供,并且对于任何了解正则表达式的人来说都很容易理解。
      • 当然,这将始终为您提供最后一个值。但是,使用正则表达式仍然比它需要的复杂。而且,最后一个值可能不是实际需要的,尤其是在输入稍后更改时。
      • 那么,如果稍后输入发生变化,那么第二个值也可能不是所需要的。 OP 要求提供冒号后的最后一个值,这是获取它的简单方法。
      • 人们所要求的和他们真正需要的之间存在微妙但重要的区别。
      猜你喜欢
      • 2020-12-18
      • 2012-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-21
      相关资源
      最近更新 更多