How to get the last char of a string in PHP?

前端 未结 12 1378
说谎
说谎 2020-12-04 05:24

I need to get the last character of a string. Say I have \"testers\" as input string and I want the result to be \"s\". how can I do that in PHP?

相关标签:
12条回答
  • 2020-12-04 05:52
    substr($string, -1) 
    
    0 讨论(0)
  • 2020-12-04 05:52

    From PHP 7.1 you can do this (Accepted rfc for negative string offsets):

    <?php
    $silly = 'Mary had a little lamb';
    echo $silly[-20];
    echo $silly{-6};
    echo $silly[-3];
    echo $silly[-15];
    echo $silly[-13];
    echo $silly[-1];
    echo $silly[-4];
    echo $silly{-10};
    echo $silly[-4];
    echo $silly[-8];
    echo $silly{3}; // <-- this will be deprecated in PHP 7.4
    die();
    

    I'll let you guess the output.

    Also, I added this to xenonite's performance code with these results:

    substr() took 7.0334868431091seconds

    array access took 2.3111131191254seconds

    Direct string access (negative string offsets) took 1.7971360683441seconds

    0 讨论(0)
  • 2020-12-04 05:53
    substr("testers", -1); // returns "s"
    

    Or, for multibytes strings :

    substr("multibyte string…", -1); // returns "…"
    
    0 讨论(0)
  • 2020-12-04 05:58

    Remember, if you have a string which was read as a line from a text file using the fgets() function, you need to use substr($string, -3, 1) so that you get the actual character and not part of the CRLF (Carriage Return Line Feed).

    I don't think the person who asked the question needed this, but for me, I was having trouble getting that last character from a string from a text file so I'm sure others will come across similar problems.

    0 讨论(0)
  • 2020-12-04 06:07

    Or by direct string access:

    $string[strlen($string)-1];
    

    Note that this doesn't work for multibyte strings. If you need to work with multibyte string, consider using the mb_* string family of functions.

    As of PHP 7.1.0 negative numeric indices are also supported, e.g just $string[-1];

    0 讨论(0)
  • 2020-12-04 06:07

    As of PHP 7.1.0, negative string offsets are also supported. So, if you keep up with the times, you can access the last character in the string like this:

    $str[-1]
    

    DEMO

    At the request of a @mickmackusa, I supplement my answer with possible ways of application:

    <?php
    
    $str='abcdef';
    var_dump($str[-2]); // => string(1) "e"
    
    $str[-3]='.';
    var_dump($str);     // => string(6) "abc.ef"
    
    var_dump(isset($str[-4]));  // => bool(true)
    
    var_dump(isset($str[-10])); // => bool(false)
    
    0 讨论(0)
提交回复
热议问题