因为有xyz.gif,所以匹配成功:
$str=' 
<img   src="../images/smiley/asd.gif"   /> 
... 
<img   src="http://localhost/images/list_hasenc.gif"   /> 
... 
<img   src="http://localhost/images/xyz.gif"   /> 
... 
';if(preg_match('/<img(?:(?:[^>](?!\/smiley\/ |\/list_hasenc\.gif)[^>])+)>/i',$str,$m)){
    echo   '含图';
    print_r($m);
}else{
    echo   '不含图';
}