如何在url中取出文件名的结尾?

时间:2017-10-12 13:01:52

标签: php

我正在使用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;
}

谢谢

5 个答案:

答案 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));