我试图将网页图像保存到本地,我在这里使用代码来判断,如果图像文件名末尾不是.jpg、.jpeg、.png或.gif,请添加它们。我使用stripos
,但是当这样的图像URL时遇到一些麻烦。那么如何解决呢?谢谢。
$webimage = 'http://pcdn.500px.net/5953805/d0dd841969187f47e8ad9157713949b4b95b3bda/4.jpg?1333782904356';
$pieces = explode("/", $webimage);
$pathend = end($pieces);
$imageinfo = @getimagesize($webimage);
$imagetype= $imageinfo['mime'];
if($imagetype=='image/jpeg'){
if(stripos($pathend,'.jpg')==0){
$newpathend = $pathend.'.jpg'; // if image end is't '.jpg', add '.jpg'
}else if(stripos($pathend,'.jpeg')==0){
$newpathend = $pathend.'.jpeg'; // if image end is't '.jpg', add '.jpeg'
}else{
$newpathend = $pathend;// if image end is '.jpg' or '.jpeg', do not change
}
}
if($imagetype=='image/png'){
if(stripos($pathend,'.png')==0){
$newpathend = $pathend.'.png'; // if image end is't '.png', add '.png'
}else{
$newpathend = $pathend;// if image end is '.png', do not change
}
}
if($imagetype=='image/gif'){
if(stripos($pathend,'.gif')==0){
$newpathend = $pathend.'.gif'; // if image end is't '.gif', add '.gif'
}else{
$newpathend = $pathend;// if image end is '.gif', do not change
}
}
你可以这样尝试
$type=Array(1 => 'jpg', 2 => 'jpeg', 3 => 'png', 4 => 'gif'); //store all the image extension types in array
$imgname = ""; //get image name here
$ext = explode(".",$imgname); //explode and find value after dot
if(!(in_array($ext[1],$type))) //check image extension not in the array $type
{
//your code here
}
为什么不使用preg_match?
if( preg_match('/'.(jpg|jpeg|png|gif)(?:['?'#].*)?$/i', $webimage, $matches) ) {
// matching file extensions are in $matches[1]
}
此函数路径信息可能会对您有所帮助。
这适用于jpg以及jpeg和大写字母。它也适用于文件名,如testing.the.bicycle.jpg
一试 https://regex101.com/r/gI8uS1/1
public function is_file_image($filename)
{
$regex = '/'.(jpe?g|bmp|png|JPE?G|BMP|PNG)(?:['?'#].*)?$/';
return preg_match($regex, $filename);
}
使用 strops
if (strpos($your_text,'.png') !== false) {
//do something
} else if (strpos($your_text,'.jpg') !== false) {
//do something
} else if (strpos($your_text,'.gif') !== false) {
//do something
}
希望它能有所帮助!
引用自KingJeffrey 在此页面中回答
if( preg_match('/'.(jpg)(?:['?'#].*)?$/i', $imgname, $matches) ) {
echo "jpg";
}else if( preg_match('/'.(png)(?:['?'#].*)?$/i', $imgname, $matches) ) {
echo "png";
}else if( preg_match('/'.(gif)(?:['?'#].*)?$/i', $imgname, $matches) ) {
echo "gif";
}
$Extension=strrev(substr(strrev($fileName),0,strpos(strrev($fileName),'.')));
if(preg_match('/png|jpg|jpeg|gif/',$Extension))
{
true
}
else
{
false
}