PHP中的indexOf和lastIndexOf?

时间:2014-11-14 05:03:21

标签: php indexof lastindexof

在Java中,我们可以使用indexOflastIndexOf。既然这些函数不存在于PHP中,那么这个Java代码的PHP等价物是什么?

if(req_type.equals("RMT"))
    pt_password = message.substring(message.indexOf("-")+1);
else 
    pt_password = message.substring(message.indexOf("-")+1,message.lastIndexOf("-"));

4 个答案:

答案 0 :(得分:37)

您需要以下函数才能在PHP中执行此操作:

  

strpos找到字符串

中第一次出现子字符串的位置      

strrpos在字符串

中查找最后一个子字符串的位置      

substr返回字符串的一部分

这是substr函数的签名:

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

substring函数(Java)的签名看起来有点不同:

string substring( int beginIndex, int endIndex )

substring(Java)期望将end-index作为最后一个参数,但substr(PHP)需要一个长度。

对于get the desired length by the end-index in PHP来说并不难:

$sub = substr($str, $start, $end - $start);

这是工作代码

$start = strpos($message, '-') + 1;
if ($req_type === 'RMT') {
    $pt_password = substr($message, $start);
}
else {
    $end = strrpos($message, '-');
    $pt_password = substr($message, $start, $end - $start);
}

答案 1 :(得分:14)

在php中:

  • stripos()函数用于查找字符串中第一次出现不区分大小写的子字符串的位置。

  • strripos()函数用于查找字符串中最后一个不区分大小写的子字符串的位置。

  

示例代码:

$string = 'This is a string';
$substring ='i';
$firstIndex = stripos($string, $substring);
$lastIndex = strripos($string, $substring);

echo 'Fist index = ' . $firstIndex . ' ' . 'Last index = '. $lastIndex;
  

输出:拳头指数= 2最后指数= 13

答案 2 :(得分:3)

<pre>

<?php
//sample array
$fruits3 = [
 "iron",
  1,
 "ascorbic",
 "potassium",
 "ascorbic",
  2,
 "2",
 "1"
];


// Let's say we are looking for the item "ascorbic", in the above array


//a PHP function matching indexOf() from JS
echo(array_search("ascorbic", $fruits3, TRUE)); //returns "4"


//a PHP function matching lastIndexOf() from JS world
function lastIndexOf($needle, $arr){
return array_search($needle, array_reverse($arr, TRUE),TRUE);
}
echo(lastIndexOf("ascorbic", $fruits3)); //returns "2"


//so these (above) are the two ways to run a function similar to indexOf and lastIndexOf()

?>
</pre>

答案 3 :(得分:0)

这是最好的方法,非常简单。

$msg = "Hello this is a string";
$first_index_of_i = stripos($msg,'i');
$last_index_of_i = strripos($msg, 'i');

echo "First i : " . $first_index_of_i . PHP_EOL ."Last i : " . $last_index_of_i;