Php 从URL获取imgur ID

Php 从URL获取imgur ID,php,regex,Php,Regex,如何从给定的imgur URL获取ID。以下是不同类型URL的一些示例: https://imgur.com/gallery/arP2Otg https://i.imgur.com/ycArzxR.jpg http://imgur.com/SyuKFYj 据我所知,ID的长度各不相同 之前在SE上也有类似的问题,但这并不是完美的 例如,URLhttps://imgur.com/SyuKFYj& 与该问题的答案不符。请注意附在URL末尾的&符号。我想您是在试图提取最后一部分开头的单词chars

如何从给定的imgur URL获取ID。以下是不同类型URL的一些示例:

https://imgur.com/gallery/arP2Otg
https://i.imgur.com/ycArzxR.jpg
http://imgur.com/SyuKFYj
据我所知,ID的长度各不相同

之前在SE上也有类似的问题,但这并不是完美的


例如,URLhttps://imgur.com/SyuKFYj& 与该问题的答案不符。请注意附在URL末尾的&符号。

我想您是在试图提取最后一部分开头的单词chars

preg_match('~/\K\w+(?=[^/]*$)~m', 'https://imgur.com/SyuKFYj', $id);
echo $id[0];

我想你的问题是如何判断尾随字符是否是ID的一部分。据我所知,imgur ID的长度总是奇数。链接有时包含一个尾随字符来表示大小或其他内容,因此在去掉最后/和之间的所有内容之后。在链接中,如果长度为6,8,…,则还需要去除尾随字符

var u = 'https://i.imgur.com/ycArzxR.jpg';
var s = u.lastIndexOf('/') + 1;
var d = (u + '.').indexOf('.', s);
var id = u.substring(s, d - ((d - s + 1) % 2));

你确定那是对的吗?我正在URL上尝试http://imgur.com/SyuKFYj,但当我打印出来时,它只是返回1。我已经设置了这个测试:@user445401 regexr站点是为js设计的,而不是为php设计的。检查我附加的链接。尽管如此,当我尝试返回preg_match ~/\K\w+?=[^/]*$~”,它仍然只返回1https://imgur.com/SyuKFYj“.@user445401检查我的更新。您必须打印匹配项。它现在不会返回任何内容: