【问题标题】:How can I get the last 7 characters of a PHP string?如何获取 PHP 字符串的最后 7 个字符?
【发布时间】:2012-05-19 12:23:09
【问题描述】:

我将如何获取下面字符串的最后 7 个字符?

例如:

$dynamicstring = "2490slkj409slk5409els";
$newstring = some_function($dynamicstring);
echo "The new string is: " . $newstring;

将显示的内容:

The new string is: 5409els

【问题讨论】:

  • question identified as a dup 和这个问题完全不一样。
  • 讽刺的是,当我在 Google 上搜索这个主题时,我被带到了这里。 叹息
  • @Asaph 我称之为堆栈影响。人们尝试任何事情来解决问题,他们要做的第一件事就是将其标记为重复,只是为了标记它
  • 在 SO 中搜索问题并在答案中找到一行代码比阅读手册要容易得多。

标签: php string


【解决方案1】:

substr() 与负数一起用于第二个参数。

$newstring = substr($dynamicstring, -7);

来自php docs

string substr ( string $string , int $start [, int $length ] )

如果 start 为负数,则返回的字符串将从字符串末尾的第 start 个字符开始。

【讨论】:

  • 但如果 $dynamicstring 少于 7 个字符,$newstring 将为空。 (至少在 PHP 5.2.6 上)
  • 你总是可以先用strlen检查一下字符数是否大于等于7。
  • 从 PHP 8 开始你可以使用str_ends_with(string $haystack, string $needle): bool
【解决方案2】:

嗯……这样吗?

$newstring = substr($dynamicstring, -7);

【讨论】:

    【解决方案3】:

    使用多字节字符代码的结果更安全,总是使用 mb_substr 而不是 substr。 utf-8 示例:

    $str = 'Ne zaman seni düşünsem';
    echo substr( $str, -7 ) . ' <strong>is not equal to</strong> ' .
      mb_substr( $str, -7, null, 'UTF-8') ;
    

    【讨论】:

      【解决方案4】:

      在获取字符串之前最好进行检查。

      $newstring = substr($dynamicstring, -7);
      

      如果字符大于 7,则返回最后 7 个字符,否则返回提供的字符串。

      如果长度小于 7 则需要返回消息或错误时执行此操作

      $newstring = (strlen($dynamicstring)>=7)?substr($dynamicstring, -7):"message";
      

      substr documentation

      【讨论】:

      • 我认为需要 else 部分才能回复消息。输入无效数据或..
      • 这可能是最好的答案,唯一能让它变得更好的是参考 php 手册。
      • 在第二个sn-p中,如果strlen正好为7,就会返回错误。修复:将 &gt;7 替换为 &gt;=7
      【解决方案5】:

      为简单起见,如果您不想发送消息,请尝试此操作

      $new_string = substr( $dynamicstring, -min( strlen( $dynamicstring ), 7 ) );
      

      【讨论】:

        【解决方案6】:

        最后 7 个字符

        $newstring = substr($dynamicstring, -7);
        

        $newstring : 5409els

        前 7 个字符

        $newstring = substr($dynamicstring, 0, 7);
        

        $newstring : 2490slk

        【讨论】:

          【解决方案7】:

          这里有多个正确答案。但是,如果您想要substr 的“安全”版本,需要什么并不明显,

          substr,当字符串“足够长”时,如果字符串太短,则返回原始字符串(而不是返回false)。

          /** Unlike substr, handles case where $string is too short.
           * @param $string
           * @param $nChars - negative to return at end of string.
           */
          function safe_substr($string, $nChars) {
              if ($nChars == 0 || !isset($string))
                  return "";
          
              if (strlen($string) <= abs($nChars))
                  // $string is too short (or exactly the desired length). Return the string.
                  return $string;
          
              return substr($string, $nChars);
          }
          

          注意:对于 UTF-8 字符,定义 safe_mb_substr,将上面的 substr 替换为 mb_substr。并将strlen 替换为mb_strlen

          【讨论】:

            【解决方案8】:

            字符串的最后 7 个字符:

            $rest = substr( "abcdefghijklmnop", -7); // returns "jklmnop"
            

            【讨论】:

              猜你喜欢
              • 2011-02-10
              • 2011-07-07
              • 2011-08-17
              • 2011-03-29
              • 1970-01-01
              • 1970-01-01
              • 2021-02-11
              相关资源
              最近更新 更多