PHP 5.3.2与PHP 5.2.1中的preg_match差异

时间:2011-05-09 20:33:00

标签: preg-match php-5.3

不是很多PHP /正则表达式的人,但我很困惑为什么PHP Web框架中的某些功能自从Ubuntu 8.04(PHP 5.2.1)迁移到Ubuntu 10.04 LTS(PHP 5.3.2)后就停止了工作。

使用xdebug和远程调试,我可以逐步查看GD库中的一个函数,该函数检查有问题的文件是否具有可以缩略图的mime类型:

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技能的人可以在这里提供帮助。

1 个答案:

答案 0 :(得分:3)

此代码正在查找以image开头的MIME类型,例如image/gifimage/jpeg。如果$pmimeType"i",则合法地未通过测试。 i不是有效的MIME类型,更不用说图像MIME类型了。

我怀疑正则表达式匹配有什么问题。我会考虑这个虚假i MIME类型的来源。