2011-04-21 31 views
1

下面的代碼在$ image/$ imgsrc的路徑上有一個空格時返回一個eroor。例如www.domain.com/my pic.gif當圖像路徑上有空格時,代碼將返回錯誤。如何通過代碼糾正它?

但是,如果您在其中添加%20,則可以正常工作。我該如何修改它,以便在圖像有空間可以正確運行而無需編輯路徑?

謝謝!

<?php function resizeImg($imgsrc ,$maxW='*', $maxH='*', $allowScaleUp=0, $returnHTML="alt='image'"){ 
if($s=getimagesize($imgsrc)){ 
    $oW=$s[0];$oH=$s[1]; 
    if(($oW>$maxW && $maxW!='*') || ($oH>$maxH && $maxH!='*') || $allowScaleUp){//if resize is needed: 
    if($maxW && $maxH=='*'){ //constrain by width: 
    $proportion=$oH/$oW; 
    $w=$maxW; 
    $h=$maxW*$proportion; 
    }else if($maxH && $maxW=='*'){ //constrain by height: 
    $proportion=$oW/$oH; 
    $h=$maxH; 
    $w=$maxH*$proportion; 
    }else if(!$maxW && $maxH){ //constrain by smallest side: 
    return($oW>$oH ? resizeImg($imgsrc, '*', $maxH, $allowScaleUp, $returnHTML) : resizeImg($imgsrc, $maxW, '*', $allowScaleUp, $returnHTML)); 
    }else if($maxW && !$maxH){ //constrain by largest side: 
    return($oW>$oH ? resizeImg($imgsrc, $maxW, '*', $allowScaleUp, $returnHTML) : resizeImg($imgsrc, '*', $maxH, $allowScaleUp, $returnHTML)); 
    }else{ 
    return($maxW>$maxH ? resizeImg($imgsrc, '*', $maxH, $allowScaleUp, $returnHTML) : resizeImg($imgsrc, $maxW, '*', $allowScaleUp, $returnHTML)); 
    } 
    }else{ 
    $w=$oW;$h=$oH; 
    } 
    //echo "orig: ".$oW."x:".$oH."<br />max: ".$maxW."x".$maxH."<br />new: ".$w."x".$h."<br />"; //debug 
    $w=round($w); $h=round($h); 
    return ($returnHTML ? "<img src='$imgsrc' width='$w' height='$h' $returnHTML />" : array(0=>$w,1=>$h,"width"=>$w,"height"=>$h)); 
}else{//file does not exist or is not an image: 
    return false; 
} 
} 
?> 


<?php echo resizeImg($picture,250,'*') ?> 
+0

你能給一個較長的例子,你沒有足夠的代碼爲我們瞭解你的整個網站在做什麼。 – 2011-04-21 01:49:01

+2

嗷...我的眼睛..! – 2011-04-21 01:51:03

+0

它「返回」什麼錯誤? – 2011-04-21 01:51:34

回答

1

是的,getimagesize需要一個正確的,有效的URI,如果你使用URI綁定。因此,用%20see example #3)替換空格。

urlencode編碼各種實體的,所以我的建議是:if ($s = getimagesize(str_replace(' ', '%20', $imgsrc))) {

+0

所以它只是一個手動的東西? – EnexoOnoma 2011-04-21 01:55:42

+1

@Punkis:不好意思? – 2011-04-21 01:56:13

+0

我的意思是你必須手動做的事情? – EnexoOnoma 2011-04-21 01:56:52

相關問題