在Java中,我们可以使用indexOf
和lastIndexOf
。既然这些函数不存在于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("-"));
答案 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;