2011-05-09 17 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