2011-05-09 18 views
0

沒有太多的PHP /正則表達式的人,但我感到困惑的是,爲什麼PHP Web框架中的某些功能在轉移到Ubuntu 10.04 LTS(PHP 5.3 .2)從Ubuntu 8.04(PHP 5.2.1)。preg_match在PHP 5.3.2與PHP 5.2.1之間的差異

使用了XDebug和遠程調試,我能夠步的功能檢查,看看是否有問題的文件有可能縮略圖一個MIME類型,GD庫:

function liberty_gd_can_thumbnail_image($pMimeType) { 
$ret = FALSE; 
if(!empty($pMimeType)) { 
    $ret = preg_match('/^image/i', $pMimeType); 
} 
return $ret; 
}  

我已經證實$ pMimeType的值是「i」,並將該行更改爲$ret = true;可解決此問題,但我不確定爲什麼現在不起作用。希望有更好的正則表達式/ PHP技能的人可以在這裏協助。

回答

3

此代碼正在查找以image開頭的MIME類型,例如, image/gifimage/jpeg。如果$pmimeType"i"那麼合法地通過測試失敗。 i不是有效的MIME類型,更不用說圖像MIME類型。

我懷疑正則表達式匹配有什麼問題。我想看看這個虛假i MIME類型來自哪裏。

+0

啊,好的,「/我」把我扔在那裏,認爲這是一個sed-like的「形象或我」類型的表達。 – gravyface 2011-05-09 22:34:20

+0

@gravyface啊,是的,這是一個標誌,使正則表達式不區分大小寫。正則表達式本身在斜線之間。 – 2011-05-10 00:55:15

+0

是的,你是對的:作爲一個MIME類型的「我」沒有任何意義(有點掩蓋,認爲「我=圖像」) – gravyface 2011-05-10 00:58:11