2014-01-08 49 views
0

考慮到我從一個文件夾(g-images /)創建一個圖庫並使用文件名作爲標題的工作代碼,我該如何從這些標題中排除除* .jpg之外的其他文件擴展名(即*。 png,* .gif)?如何從文件夾中使用文件名作爲PHP庫的標題時排除文件擴展名?

此刻被刪除的唯一擴展名是* .jpg。如果它是任何其他擴展它保存爲標題對圖像的一部分...

HELP,總新手在這裏:-)

<?php 
    $imglist = array(); 
    $img_folder = "g-images/"; 

    //use the directory class 
    $imgs = dir($img_folder); 

    //read all files from the directory, checks if are images and adds them to a list 
    while ($file = $imgs->read()) { 
    if (eregi("gif", $file) || eregi("jpg", $file) || eregi("png", $file)){ 
    $imglist[] = $file; 
    } 
} 
closedir($imgs->handle); 

//display image 
foreach($imglist as $image) { 
echo '<li><a href="'.$img_folder.$image.'" target="zoomed"><img src="timthumb.php?src='.$img_folder.$image.'&a=r&h=260" />'; 
echo '<p>'.str_replace('.jpg', ' ', str_replace('name', 'Name', $image)).'</p></a></li>'; 
} 
?> 
+0

感謝大家的幫助!我真的很感激,歡呼! :-) – kcullen

回答

0

嘗試更換這行:

$imglist[] = $file; 

$imglist[] = substr($file, 0, strrpos($file, '.')); 

文件名使它進入前陣這將砍掉文件擴展名,並會與任何推廣工作(你會不會繼續增加擴展到一個數組,如果,例如,在未來要支持* .TIFF)

更新

您可以通過數組跟蹤的文件擴展名的條目陣列本身:

$position = strrpos($file, '.'); 
$imglist[] = array( 
    'filename' => substr($file, 0, $pos), 
    'extension' => substr($file, $pos), 
); 

此外,請參閱this question以更好地確定文件是否爲圖像。

+0

OP使用'$ imglist'中的條目來創建文件路徑。在創建路徑之前,您無法刪除擴展名。 –

+0

謝謝,我的答案更新了 –

0

內,您的foreach循環,你可以做以下

foreach($imglist as $image) { 
    echo '<li><a href="'.$img_folder.$image.'" target="zoomed"><img src="timthumb.php?src='.$img_folder.$image.'&a=r&h=260" />'; 
    // Explode the image name 
    $arr = explode('.', $image); 
    if(isset($arr[0]){ 
     // Get the first element of the array 
     $imageName = $arr[0]; 
     echo '<p>'.str_replace('name', 'Name', $imageName).'</p></a></li>'; 
    } 
} 
+0

如果我命名一個文件,該怎麼辦:my.image.file.jpg? –

0

一個PHP招完成,這是爆炸()的名稱,將其劃分在.是。然後,我們只是array_pop()擴展關閉,爆它放回一個字符串:

$file_array = explode(".",$image); 
$extension = array_pop($file_array); 
$filename = implode($file_array); 
$filename = ucfirst($filename); 
var_dump($filename); 

我這個代碼

str_replace('name', 'Name', $image) 

你想利用字符串承擔?你的代碼所做的是查找文本字符串「名」,如果找到,使用該文本字符串「名稱」 ...更換爲了利用你想串$標題的第一個字母:

$capitalizedTitle = ucfirst($title); 
相關問題