0

我正在尝试将图像文件名存储到 SQL 数据库。文件名看起来像“ _p4_analyzed__07001447_20121003-4000096925_Class2_reg_EPI.png ”,我希望它只是“ Class2_reg_EPI.png ”。

我希望这条线能解决问题:$fileName = str_ireplace($casePath."/","", $file)但不幸的是,当我运行它时,它仍然给我一个带有路径的长名称('_'下划线充当'/'?)

有关更多信息,请参见下面的代码:

$casePath=$path."/".$caseID."/Summary/slicesdir";
    global $status;
//    print("processImages case path:".$casePath."</br>");
     $files = glob($casePath."/*.png");

    $connection = getMySqlConnection();
    $imageCount= 0;
    for($i = 0; $i < count($files); $i++) {
        $file = $files[$i];
        $fileName = str_ireplace($casePath."/","", $file);

        if(strripos($fileName, "grot") === false)
        {
            $imageCount ++;
            //if exists
            if(!doesImageExist($fileName, $patientID, $caseID)) {
                $id = uniqid("", true);
                 $sql = "Insert Into images(id,patientid,caseid, image_name,comments,status) VALUES('".mysql_real_escape_string($id)
                    ."','".mysql_real_escape_string($patientID)."','".mysql_real_escape_string($caseID)."', '".mysql_real_escape_string($fileName)."',NULL,".$status[0][0].")";
//                 print($sql."</br>");
                 mysql_query("START TRANSACTION", $connection);
                $result = mysql_query($sql, $connection);
                if($result) {
                    mysql_query("COMMIT", $connection);
//                    print("Image data inserted </br>");
                 } else {
                    mysql_query("ROLLBACK", $connection);
                     print("Image Data failed </br>");
                }
            }
        }
    }

任何帮助表示赞赏!提前致谢!

4

1 回答 1

1

如果原始文件名包含路径信息(例如/path/to/the/file.png),并且您只想要文件名(file.png),则可以使用删除路径basename()

$filename = basename('/path/to/file.png');

echo $filename; // outputs 'file.png'
于 2013-05-07T21:15:41.547 回答