preg-match - 使用 PHP 从 Google Drive 获取文件 ID
问题描述
我一直在寻找一种在 Google Drive 中提取文件 ID 的方法,以及寻找信息和一些类似功能的方法,我设法找到了这个,它对我有用,但我希望他们能稍微完善一下更多的。
<?php
function get_drive_id_from_url($url) {
preg_match('/\/d\/(.+)\//', $url, $result);
return $result[1];
}
echo get_drive_id_from_url('https://drive.google.com/file/d/FILE_ID/view?usp=sharing');
?>
解决方案
如果您使用另一个分隔符/
,则不必转义正斜杠。您可以使用\K
忘记到目前为止匹配的内容,然后匹配任何字符,除了/
然后使用积极的前瞻将 a 直接断言/
到右侧。
由于这不使用捕获组,因此结果在$result[0]
.
/d/\K[^/]+(?=/)
模式匹配:
/d/
从字面上匹配\K
清除匹配缓冲区[^/]+
匹配任何字符的 1 次以上/
(或[^/\s]+
也不匹配空白字符)(?=/)
/
正向前瞻,直接向右断言
示例代码
function get_drive_id_from_url($url)
{
preg_match('~/d/\K[^/]+(?=/)~', $url, $result);
return $result[0];
}
echo get_drive_id_from_url('https://drive.google.com/file/d/FILE_ID/view?usp=sharing');
输出
FILE_ID
更新模式的捕获组变体是:
/d/([^/]+)/
推荐阅读
- java - 异步任务减慢问题
- css - 相对于不是其直接父元素的元素,如何以 % 为单位定义容器的宽度?
- c# - 为什么有时在运行游戏时,游戏中的文字字幕是黑色的?
- android - 如何通过 android 下拉菜单/布局上的手势实现展开/折叠?
- c# - 使用 pax 设备在 c# 或 Vb.net 中集成 POS 链接支付
- r - 我想在我的代码中使用热图,但出现错误
- java - 使用黄瓜 v1.2.4 时运行黄瓜测试的方法没有签名
- c++ - 我刚刚安装了 Visual Studio 并专门遇到了一些错误 WindowsSDKDir 属性未定义。可能找不到某些构建工具
- flutter - 如何将堆叠中的 2 个容器居中
- r - 在 r 中重复循环,直到一列中的值小于其他几列