2013-05-07 2 views
0

Я пытаюсь сохранить имена файлов изображений в базе данных SQL. Имя файла выглядит примерно так: «_p4_analyzed__07001447_20121003-4000096925_Class2_reg_EPI.png», и я надеялся, что это будет просто «Class2_reg_EPI.png».Функция PHP для сокращения строк каталога файлов

Я надеялся, что эта линия будет делать трюк: $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>"); 
       } 
      } 
     } 
    } 

Любая помощь приветствуется! Заранее спасибо!

+1

@alchuang. , , Почему этот помеченный SQL? –

+0

Вам нужно выбрать/определить шаблон, что вы ожидаете и нужный результат. Таким образом, вы можете использовать regex для переименования ваших файлов. – HamZa

+0

Если вы помещаете другое имя в базу данных, чем фактическое имя файла, как вы сможете получить доступ к файлу позже? – Barmar

ответ

1

Если исходное имя файла содержит информацию о пути (например /path/to/the/file.png), и вы хотите только имя файла (file.png), вы можете удалить путь с помощью basename()

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

echo $filename; // outputs 'file.png' 
+0

Как это избавиться от префикса '_p4_analyzed__07001447_20121003-4000096925'? Это не справочная информация. – Barmar

+0

@Bamar, основанный на попытке OP заменить «каталог»/«путь» в имени файла, кажется, что он пытался удалить путь (он упоминает * «подчеркивание« _ »действует как«/»» *). Я могу быть полностью в неправильном направлении с моим ответом, просто добавил его, если бы он искал очевидное – thaJeztah

Смежные вопросы