我尝试使用正则表达式来检查URL是否是Instagram图片,并仅返回URL的开头部分和/p/PICTUREID
到目前为止,这是我能想到的:
^(.*instagram.com\/p\/.*)\/
字符串
然而,这需要有一个尾随斜杠,但我不想要求它。
示例(应匹配):
https://www.instagram.com/p/BKbwlrfjGHY/?post->
https://www.instagram.com/p/BKbwlrfjGHY
http://www.instagram.com/p/BKbwlrfjGHY/ ->
http://www.instagram.com/p/BKbwlrfjGHY
instagram.com/p/BKbwlrfjGHY ->
instagram.com/p/BKbwlrfjGHY
型
我如何停止在尾随斜杠,如果它存在和任何其他之后?
下面是我的regex 101测试:
https://regex101.com/r/JJS2kz/1
6条答案
按热度按时间pbossiut1#
解决方案一
你可以在这里使用这个正则表达式来匹配你提供的所有例子:
字符串
说明
正则表达式的第一部分查找
http
或https
,然后是www.
,并使整个组合成为可选的。型
第二部分是查找字符串
instagram.com
型
第三部分是查找
/p/
后面的斜杠后面的任何字母,以及可选的尾随斜杠/
。请注意,正则表达式的这一部分位于括号中,因此您可以在稍后使用preg_match_all时检索它。型
方案二
如果您希望能够支持以下模式(withthe
http/https
andwithoutthewww
):型
你可以使用这个regex:
型
示例
型
然后,如果你做一个
$matches
的var_dump
:型
现在要检索每个id,您可以使用foreach:
型
结果将会是:
型
wribegjk2#
下面是regexp,它也适用于username在路径中的情况
第一个月
测试用例:
https://instagram.com/p/BryAm8hnjGk
个https://www.instagram.com/anettletigre/p/BryAm8hnjGk/
个uklbhaso3#
基于上述书面信息,并添加一点我自己,我提出了一个通用的方法来获得代码:
字符串
范例:
型
答:
型
djmepvbi4#
如果Instagram.com是您搜索的唯一URL,则strpos将比正则表达式运行得更快:
字符串
mdfafbf15#
字符串
oxosxuxt6#
我知道这不是一个真正的答案OP,但我想提,我经常使用不同的方式来检查网址,
parse_url
.这是非常冗长,但我发现它很清楚阅读和理解.为Instagram做了一个快速演示:字符串
在URL中添加协议或做更多的健全性检查(如果需要的话),甚至将其捆绑到一个函数中,都是非常简单的。希望它能帮助您解决这个问题。