我需要验证字符串字符串是否为图像文件名。
$aaa = 'abskwlfd.png';
if ($aaa is image file) {
echo 'it's image';
else {
echo 'not image';
}
我该怎么做?它将清除100张图像,所以它应该很快。我知道有一种文件类型验证方法,但我认为这很慢.. preg_match怎么样?它更快吗? 我不擅长preg_match。
提前谢谢。
答案 0 :(得分:31)
试试这个:
<?php
$supported_image = array(
'gif',
'jpg',
'jpeg',
'png'
);
$src_file_name = 'abskwlfd.PNG';
$ext = strtolower(pathinfo($src_file_name, PATHINFO_EXTENSION)); // Using strtolower to overcome case sensitive
if (in_array($ext, $supported_image)) {
echo "it's image";
} else {
echo 'not image';
}
?>
答案 1 :(得分:12)
试试这段代码,
if (preg_match('/(\.jpg|\.png|\.bmp)$/i', $aaa)) {
echo "image";
} else{
echo "not image";
}
答案 2 :(得分:2)
也许你正在寻找这个:
function isImageFile($file) {
$info = pathinfo($file);
return in_array(strtolower($info['extension']),
array("jpg", "jpeg", "gif", "png", "bmp"));
}
pathinfo
检索有关文件的详细信息,包括扩展程序。strtolower
确保扩展程序与我们支持的图像列表相匹配,即使它的情况不同in_array
检查文件扩展名是否在我们的图片扩展列表中。答案 3 :(得分:1)
试试这个:
$a=pathinfo("example.exe");
var_dump($a['extension']);//returns exe
答案 4 :(得分:1)
试试这个
$allowed = array(
'.jpg',
'.jpeg',
'.gif',
'.png',
'.flv'
);
if (!in_array(strtolower(strrchr($inage_name, '.')), $allowed)) {
print_r('error message');
}else {
echo "correct image";
}
或strrchr它需要最后一次出现的字符串.. 其他一些概念。
$allowed = array(
'image/jpeg',
'image/pjpeg',
'image/png',
'image/x-png',
'image/gif',
'application/x-shockwave-flash'
);
if (!in_array($image_name, $allowed)) {
print_r('error message');
}else {
echo "correct image";
}
您可以在此使用STRTOLOWER功能,也可以使用in_array功能
答案 5 :(得分:0)
是的,正则表达式是要走的路。或者,您可以拆分"."
并检查返回数组中的最后一个元素是否符合图像扩展数组。我不是一个PHP人,所以我不能为你编写代码,但我可以编写正则表达式:
^[a-zA-Z\.0-9_-]+\.([iI][mM][gG]|[pP][nN][gG]|etc....)$
这个很简单。我知道你对正则表达式没有多少经验,但这就是这个人的作用:
^: start of string
[a-zA-Z\.0-9_-]: describes range of characters including all letters, numbers, and ._-
\.: "." character
([iI][mM][gG]|[pP][nN][gG]|etc....): | means or. So just put all image extensions you know here. Again, the brackets for case-insensitivity
如果你想匹配任何序列,而不是括号和+中的东西,只需使用:
.*
“”。匹配任何字符,“*”表示任何数量的字符。所以这基本上只是说“没有限制”(换行除外)
正如你在评论中看到的那样,我可能还有很多其他的东西。只需阅读这些内容,查看正则表达式参考,您就可以了。
答案 6 :(得分:0)
试试这个
$ext = pathinfo($file_name, PATHINFO_EXTENSION); case sensitive
if (in_array($ext, $supported_image)) {
echo "it's image";
} else {
echo 'not image';
}