【发布时间】:2017-06-09 12:08:01
【问题描述】:
我有一个网址:
$url = 'https://docs.google.com/spreadsheets/d/1ljJpZDiayzMLhIJ-JDSIJjdjdY_xg3RrUDljFVRB0Qk/edit?usp=sharing#helloworld';
我想从此 URL 中获取 ID。 ID总是是 URL 1ljJpZDiayzMLhIJ-JDSIJjdjdY_xg3RrUDljFVRB0Qk 中最长的部分,所以我的方法是定位最长的部分。
我怎样才能把这个 URL 分成几部分并抓住最长的部分?我想在将查询变量部分?usp=sharing#helloworld 分解为多个部分时忽略它。
到目前为止我已经尝试过什么
我尝试了preg_match_all() 方法,其正则表达式似乎无法正确破坏 URL:
$regex = '/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/';
$url = 'https://docs.google.com/spreadsheets/d/1ljJpZDiayzMLhIJ-JDSIJjdjdY_xg3RrUDljFVRB0Qk/edit?usp=sharing#helloworld';
$result = preg_match_all($regex, $url, $matches);
print($matches);
【问题讨论】:
-
使用
str_replace删除https://docs.google.com/并用“/”分解字符串,找到存储你的id的索引。 -
parse_url()和/或explode()。 -
尽量避免使用正则表达式。用
/分割URL并在数组中找到最长的字符串->stackoverflow.com/q/3713517 -
@hjpotter92 听起来可行,但我想忽略
?usp=sharing#helloworld部分,因为有时它比 ID 长。请随时发布答案。 -
@hungrykoala URL 并不总是以
https://docs.google.com/开头——这只是一个示例。