PHP:获取字符串倒数第n个字符

13

我相信一定有一种简单的方法可以从字符串的末尾获取第n个字符。

例如:

$NthChar = get_nth('Hello', 3); // will result in $NthChar='e'

这里有一个不错的函数,你可以在你的情况下使用它:http://www.junnfo.com/extract-nth-character-from-astring-php.html - Abhik Chakraborty
你真的认为你想要的是第n个字符还是(n+1)个字符(直到你计算0th,1th...等方法)? - kuldeep.kamboj
5个回答

29

只需这样做

  $rest = substr("abcdef", -3, 1); // returns 'd'

从“Hello”返回l - Royal Bg
4
返回r自world。 - Thanasis

4

来自 substr示例

// Accessing single characters in a string
// can also be achieved using "square brackets"

因此:
$str = "isogram";
echo $str[-1]; // m
echo $str[-2]; // a
echo $str[-3]; // r

4

就像这样:

function get_nth($string, $index) {
    return substr($string, strlen($string) - $index - 1, 1);
}

1
<?php
function get_nth($string, $offset) {
    $string = strrev($string); //reverse the string
    return $string[$offset];
}

$string = 'Hello';
echo get_nth($string, 3);

由于$string [3]将为您提供字符串的第三个偏移量,但您希望它向后,因此您需要将其反转。

编辑:

尽管其他回答(在我之后发布)使用了子字符串,而且它可以是一行代码,但是使用substr($string,-2,1)几乎无法阅读,然后只需反转字符串并输出偏移量。


我真的没有主意。不过,我的 +1 给你。 - Shankar Narayana Damodaran
1
@RoyalBg 抱歉回复了2年前的评论。在PHP内部,字符串是字节数组。因此,使用数组括号访问或修改字符串不是多字节安全的,只应该对单字节编码(如ISO-8859-1)的字符串进行操作。正如手册所述。 - bangbambang
除了不支持多字节之外,创建字符串的反向副本只是为了获取其中一个字符也是不合理的。你应该使用strlen()-$offset来访问正确的字节,并提到编码不兼容性。 - John

0
substr($string, -3);//returns 3rd char from the end of the string

2
$string = 'Hello'; echo substr($string, -3); 输出结果为 llo - Royal Bg
如果输入为Hello,则输出将为llo。 - Deepu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接