我在网站上搜索了如何从网址中提取facebook id,这是从photo.php开始的?fbid =但我有一个很长的网址,知道如何获取照片ID
示例1:photo.php?fbid = 10151987845617397(完整的url存储在$ url变量中,我相信使用preg_match检查)
!preg_match("|^http(s)?://(www.)?facebook.com/photo.php(.*)?$|i", $url) || !$pid
以上代码获取facebook id 10151987845617397并将其放入变量$ pid。
如果我有一个长网址,我该如何更改代码? 这是网址 示例2:https://www.facebook.com/nokia/photos/a.338008237396.161268.36922302396/10151987845617397/?type=1&theater 在上面的网址10151987845617397是我需要捕获的照片ID并将其放在变量$ pid中。
我需要在preg_match字符串中进行哪些更改?
换句话说,将photoid 10151987845617397作为$ pid变量的输出:
对于url facebookcom / photo.php?fbid = 10151987845617397 语法是!preg_match(“| ^ http(s)?://(www。)?facebook.com/photo.php(。*)?$ | i”,$ url)|| !$ PID
所以对于url facebookcom / nokia / photos / a.338008237396.161268.36922302396 / 10151987845617397 /?type = 1& theater 语法是什么
请帮忙 感谢
答案 0 :(得分:0)
简单的解决方案,非常易读:将整个字符串用作正则表达式,使用()
围绕您想要匹配的内容:
// $tmp[1] = www or nothing
// $tmp[2] = "user" (i.e nokia)
// $tmp[3] = album id?
// $tmp[4] = photos
// $tmp[5] = Long url as requested
function extract_id_from_album_url($url) {
preg_match('/https?:\/\/(www.)?facebook\.com\/([a-zA-Z0-9_\- ]*)\/([a-zA-Z0-9_\- ]*)\/([a-zA-Z0-9_\.\-]*)\/([a-zA-Z0-9_\-]*)(\/\?type=1&theater\/)?/i', $url, $tmp);
return isset($tmp[5]) ? $tmp[5] : false;
}
需要反斜杠以确保将.
视为文字(而非正则表达式语法)。允许可选网址的问号。使用更多正则表达式语法可以使匹配“查询”更短且可扩展,但也使其更难阅读。