我在正则表达式上的suuuuuck甚至无法开始弄清楚如何从#edit中删除所有内容,其中包含来自此类URL的url的可验证内容:
https://docs.google.com/presentation/d/1aa_xpsyJtslFJsg4UndsjDvlCe7Vu97_i6Q8zSKofy4/edit?usp=sharing
非常感谢任何帮助!
谢谢!
答案 0 :(得分:0)
我相信您正在尝试解析网址末尾的query parameters。您可以使用explode函数:
执行此操作$url = "https://docs.google.com/presentation/d/1aa_xpsyJtslFJsg4UndsjDvlCe7Vu97_i6Q8zSKofy4/edit?usp=sharing";
print(explode('/edit', $url)[1]);
将打印
?usp=sharing
答案 1 :(得分:0)
使用strstr()
并将第三个参数设置为true
将是最干净,最直接的非正则表达式方法。 ...而且你不会为你的" suuuuucky"正则表达式技巧;)这会将子字符串从字符串的开头隔离到搜索子字符串之前的字符。
代码:(Demo)
$url = 'https://docs.google.com/presentation/d/1aa_xpsyJtslFJsg4UndsjDvlCe7Vu97_i6Q8zSKofy4/edit?usp=sharing';
echo strstr($url, '/edit', true); // https://docs.google.com/presentation/d/1aa_xpsyJtslFJsg4UndsjDvlCe7Vu97_i6Q8zSKofy4
echo "\n";
echo strstr($url, '/edit?', true); // https://docs.google.com/presentation/d/1aa_xpsyJtslFJsg4UndsjDvlCe7Vu97_i6Q8zSKofy4
*注意:如果?
之后查询字符串(以/edit
开头)始终存在,则将?
添加到搜索子字符串只能提高准确性。
为什么这是最好的功能?它没有利用调用正则表达式引擎的开销,它不会生成任何临时数组,而且它是单个函数调用而不是substr()
- strrpos()
。
如果您的用例稍微复杂一点,并且这种方法让您失望,那么调用parse_url()
应该足够稳定,以便您提取适当的url组件。
代码:(Demo)
$url = 'https://docs.google.com/presentation/d/1aa_xpsyJtslFJsg4UndsjDvlCe7Vu97_i6Q8zSKofy4/edit?usp=sharing';
$components = parse_url($url);
echo $components['scheme'], '://', $components['host'], strstr($components['path'],'/edit',true);