php中递归函数的问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 11:39:33
为什么输出是e2.q52.5ewq.qd.fds5.gsd2.1.1.mp3
而不是mp3啊 ?
我想要的结果是 mp3。
<?php
function getect($file_name)
{
$pos=strpos($file_name,".");
$ect=$file_name;
if($pos!=false)
{
$ect=substr(strstr($file_name,"."),1);
getect($ect);
}
return $ect;
}
echo getect("q1.e2.q52.5ewq.qd.fds5.gsd2.1.1.mp3");
?>

你的程序应该修改为:

<?php
function getect($file_name)
{
$pos=strpos($file_name,".");
if($pos!=false)
{
$ect=getect(substr($file_name,$pos+1));
} else $ect=$file_name;
return $ect;
}
echo getect("q1.e2.q52.5ewq.qd.fds5.gsd2.1.1.mp3");
?>

以上代码测试通过。

不过你这样的需求应该使用strrpos函数,这样根本无需递归,直接就可以得出结果,调试通过的代码如下:

<?php
function getect($file_name)
{
$pos=strrpos($file_name,".");
if($pos!=false) $ect=(substr($file_name,$pos+1));
else $ect="";
return $ect;
}
echo getect("q1.e2.q52.5ewq.qd.fds5.gsd2.1.1.mp3");
?>

$ect=substr(strstr($file_name,"."),1);
改为
$ect=substr(strrchr($file_name,"."),1);
应该就可以了