某天超人飛來找老鷹.....
超人:老鷹!我這邊寫的檔案顯示,不過我想要它副檔名不同,就顯示不同的圖片,請問要怎麼用!
檔案顯示格式 xxx.jpg
老鷹瞬間略過幾個念頭 字串切割->判斷
立馬寫了一段code
<?php
function Judge($type){
switch ($type)
{
case 'doc':
echo "圖檔名稱";
break;
case 'png':
echo "圖檔名稱";
break;
case 'jpg':
echo "圖檔名稱";
break;
default:
echo "X";
}
}
?>
<?php
$array = explode(".", $Row['File_Path']);
$icon = Judge($array[1]);
?>
<img src="<?=$icon;?>">
這樣丟給超人~~!
後面想想因該來個物件化,以後可以當作自己的元件庫,然後用一點時間改成物件
<?php
/**
* Description of File_Judge
*
* @author Hung(蒼鴻,老鷹)
*/
class File_Judge {
public function judge($type){
switch ($type)
{
case 'doc':
echo "圖檔名稱1";
break;
case 'png':
echo "圖檔名稱2";
break;
case 'jpg':
echo "圖檔名稱3";
break;
default:
echo "請檢查副檔名";
}
}
public function string_cutting($string){
$array = explode('.', $string);
if(isset($array[1])){
return $array[1];
}else{
echo "檔案沒有副檔名".'<BR>';
}
}
}
?>
<?php
$file = new File_Judge;
$string = "xxx.jpg";
$type = $file->string_cutting($string);
echo $file->judge($type).'<br>';
$string1 = "xxx";
$type1 = $file->string_cutting($string1);
echo $file->judge($type1);
?>
顯示結果
不解其妙
跟取得
$array = explode('.', $string);
的 array[0]
有何不同
explode
這個函數是切割字串的函數
xxx.jpg
經過這個函數,他會把有.的區隔開成陣列
所以array[0] = xxx;
array[1] = jpg;
<pre class="c" name="code">$array = explode('.', $string);
print_r($array);
/*顯示結果 array('0'=>'xxx','1'=>jpg)*/
//以上為沒測試過,不過因該是這樣
這我明白
我不明白的是
你寫的程式碼,不就是在取前面那段的檔名
還是我誤會了
chingfeng提到:
想要它副檔名不同,就顯示不同的圖片
要取副檔名
建議不要用 explode 取副檔名, 如果檔名有多個 . 你就抓錯了
php 有專用的 function 處理
http://www.php.net/manual/en/function.pathinfo.php
<pre class="c" name="code">
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');
echo $path_parts['extension'], "\n";
大大也來連載吧
也可以試試 SplFileInfo
<pre class="c" name="code"><?php
$info = new SplFileInfo('example.php');
echo $info->getExtension();
除此之外,SplFileInfo 還能提供更多有關檔案的資訊,包含完整的路徑,目錄。
或是檔案大小以及權限。
大大繼續連載吧~~!