我正在使用icecat进行产品导入系统。 我有一点问题要解决图像。 问题是Icecat可以提出不同的方式来下载像这样的图像:
http://images.icecat.biz/img/gallery_mediums/myimage.jpg http://images.icecat.biz/img/norm/medium/myimage.jpg ... 我的问题是如何将此用户案例中的元素http://images.icecat.biz/img/norm/medium/的这一部分删除为myimage.jpg
我当前的功能
public function getProductMediumImage() {
$icecat_products_image_medium = HTML::sanitize($_POST['icecat_products_image_medium']);
$product_image_medium = str_replace('http://images.icecat.biz/img/gallery_mediums', '', $icecat_products_image_medium);
$product_image_medium = str_replace('http://images.icecat.biz/img/norm/medium/', '', $icecat_products_image_medium);
if (!is_null($icecat_products_image_medium)) {
$content = @file_get_contents($icecat_products_image_medium);
file_put_contents($this->template->getDirectoryPathTemplateShopImages() . 'products/' . $product_image_medium, $content);
}
$product_image = 'products/' . $product_image_medium;
return $product_image;
}
谢谢
答案 0 :(得分:3)
一种最简单的方法是使用 basename()功能:
$url = 'http://images.icecat.biz/img/gallery_mediums/myimage.jpg';
echo basename($url); // echoes myimage.jpg
您还可以使用 pathinfo()返回其中一个项为basename的数组:
Array (
[dirname] => http://images.icecat.biz/img/gallery_mediums
[basename] => myimage.jpg
[extension] => jpg
[filename] => myimage
)
从那里获取基本名称:
$url = 'http://images.icecat.biz/img/gallery_mediums/myimage.jpg';
$img = pathinfo($url)['basename'];
echo $img; // echoes myimgage.jpg
答案 1 :(得分:2)
您可以使用php pathinfo()函数获取文件系统路径的信息。这也适用于网址。
$_POST['icecat_products_image_medium'] = 'http://images.icecat.biz/img/gallery_mediums/myimage.jpg';
$url = HTML::sanitize($_POST['icecat_products_image_medium']);
$info = pathinfo($url);
echo $info['basename']; // 'myimage.jpg'
var_export($info); //array (
// 'dirname' => 'http://images.icecat.biz/img/gallery_mediums',
// 'basename' => 'myimage.jpg',
// 'extension' => 'jpg',
// 'filename' => 'myimage'
//)
答案 2 :(得分:1)
parse_url()和pathinfo()可以创造奇迹
$file = pathinfo(parse_url($url, PHP_URL_PATH), PATHINFO_BASENAME);
答案 3 :(得分:1)
正则表达方式:
$url = 'http://images.icecat.biz/img/gallery_mediums/whatever.jpg';
preg_match_all('#\/\K(?!.*\/).+$#mui', $url, $matches, PREG_SET_ORDER, 0);
echo $matches[0][0];
答案 4 :(得分:1)
strrpos会给出最后一个字符,然后你就可以获得实际的图像文件名。
$url = 'http://images.icecat.biz/img/gallery_mediums/myimage.jpg';
echo substr($url, (strrpos ($url, '/') + 1));