26

strpos函数反向

我想找到一种可以反向找到字符位置的方法。例如倒数的最后一个“e”开始计数。

从例子

$string="Kelley";
$strposition = strpos($string, 'e');

它会给我位置1。

4

8 回答 8

40
int strrpos ( string $haystack , string $needle [, int $offset = 0 ] )

在 haystack 字符串中查找最后一次出现 needle 的数字位置。

http://php.net/manual/en/function.strrpos.php

于 2012-10-21T20:00:32.887 回答
10

您需要的是strrpos来查找字符串中最后一次出现的子字符串的位置

$string = "Kelley";
$strposition = strrpos($string, 'e');
var_dump($strposition);
于 2012-10-21T20:00:34.680 回答
5

尝试这个:

strrpos()

希望有帮助。

于 2012-10-21T20:00:42.877 回答
5

strripos并为结果strrpos添加$needle长度,例如:

<?php
$haystack = '/test/index.php';
$needle   = 'index.php';

echo strrpos($haystack, $needle);//output: 6

另一种方法是strrev用于从末尾检索位置,例如:

<?php
$haystack = 'Kelley';
$needle   = 'e';

echo strpos(strrev($haystack), strrev($needle));//Output: 1
于 2015-05-03T06:48:48.907 回答
2

尽可能简单:strrpos()

这将返回从右边第一次出现的字符。

于 2012-10-21T20:01:09.237 回答
1
function rev ($string, $char)
{
    if (false !== strrpos ($string, $char))
    {
        return strlen ($string) - strrpos ($string, $char) - 1;
    }
}

echo rev ("Kelley", "e");
于 2012-10-21T20:02:57.367 回答
1

简单的功能,你可以添加:

    function stripos_rev($hay,$ned){
    $hay_rev = strrev($hay);
    $len = strlen($hay);
    if( (stripos($hay_rev,$ned)) === false ){
        return false;
    } else {
        $pos = intval(stripos($hay_rev,$ned));
        $pos = $len - $pos;
    }
    return $pos;

}
于 2018-01-21T04:42:46.277 回答
0

唯一有效的解决方案是此功能:

function strpos_reverse ($string, $search, $offset){
    return strrpos(substr($string, 0, $offset), $search);
}
于 2021-06-18T19:37:42.493 回答