在PHP中将图像url分解为三个子部分

在PHP中将图像url分解为三个子部分,php,regex,url,preg-match,Php,Regex,Url,Preg Match,假设我有一个图像URL: 我想从此url中提取3个内容: “中”(可以是中/小/缩略图) 介质后图像名称前的部分(img/11099/TripDocument) 图像名称(清迈街市场.jpg) 您可以通过两种方式完成此操作 1.pathinfo函数- 2.使用带分隔符的分解/,并从此处开始处理数组 但不建议使用第二种方法。如果需要,也可以使用正则表达式: preg_match_all('/^.*(medium|small|thumbnail)\/(.*)\/([^\/]+)$/', $url

假设我有一个图像URL:

我想从此url中提取3个内容:

  • “中”(可以是中/小/缩略图)
  • 介质后图像名称前的部分(img/11099/TripDocument)
  • 图像名称(清迈街市场.jpg)

您可以通过两种方式完成此操作

1.pathinfo函数-

2.使用带分隔符的
分解
/
,并从此处开始处理数组


但不建议使用第二种方法。

如果需要,也可以使用正则表达式:

preg_match_all('/^.*(medium|small|thumbnail)\/(.*)\/([^\/]+)$/', $url, $matches);
结果:

  • $matches[0]=$url
  • $matches[1]=“中等”
  • $matches[2]=“img/11099/TripDocument”
  • $matches[3]=“清迈街市场.jpg”
假设:

  • 在您需要之前,给定url中没有其他“中”、“小”或“缩略图”字符串
编辑:

为了使其他大小/短语更灵活,您可以将短语提取到其他数组,如下所示:

$sizes = ['medium', 'small', 'thumbnail'];

preg_match_all('/^.*(' . implode('|', $sizes ) . ')\/(.*)\/([^\/]+)$/', $url, $matches);

向我们展示您尝试过的内容查看@Cr3aHal0我尝试了pathinfo,但没有从中获得所需的输出。当我在我给出的url上运行它时,我得到了这样的结果:dirname:basename:chiang_maiu street_market.jpgDo你总是知道中/小/缩略图文件夹有多深吗?我尝试了pathinfo,但我没有从中获得所需的输出。当我在我提供的url上运行它时,我得到了这个结果:dirname:basename:chiang_maiu street_market.jpgyu可能可以使用
explode
来进行操作。这很有效。塔克斯。你知道有什么网站可以学习如何构建正则表达式吗?如果我们能将表达式从“过滤器”中分离出来,使其独立于中/缩略图/小,那就更好了,因为可能还有其他大小的站点,我们不能推荐任何站点。有像这样的文档,但它不是很友好。我们不能匹配“过滤器”这个词,然后得到大小吗。i、 在下一个反斜杠之前,请记住该短语。因此,在这种情况下,我们不需要大小的数组,明白了吗?
^.*(filter)\/([^\/]+)\/(.*)\/([^\/]+)