Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从长url提取facebook照片id_Php_Regex_Facebook Graph Api_Facebook Fql_Preg Match - Fatal编程技术网

Php 从长url提取facebook照片id

Php 从长url提取facebook照片id,php,regex,facebook-graph-api,facebook-fql,preg-match,Php,Regex,Facebook Graph Api,Facebook Fql,Preg Match,我在这个网站上搜索了如何从以photo.php?fbid=开头的url提取facebook id,但我有一个很长的url,知道如何获取照片id 示例1:photo.php?fbid=10151987845617397(完整的url存储在$url变量中,我相信使用preg_match检查该变量) 上面的代码获取facebook id 10151987845617397并将其放入变量$pid中 如果我有一个很长的url,如何更改代码? 这是网址 例2: 在上面的url中,10151987845617

我在这个网站上搜索了如何从以photo.php?fbid=开头的url提取facebook id,但我有一个很长的url,知道如何获取照片id

示例1:photo.php?fbid=10151987845617397(完整的url存储在$url变量中,我相信使用preg_match检查该变量)


上面的代码获取facebook id 10151987845617397并将其放入变量$pid中

如果我有一个很长的url,如何更改代码? 这是网址 例2: 在上面的url中,10151987845617397是我需要捕获的照片id,并将其放入变量$pid中

我需要在preg_匹配字符串中进行哪些更改

换句话说,要将photoid 10151987845617397作为$pid变量的输出,请执行以下操作:

对于url facebookcom/photo.php?fbid=10151987845617397 语法是!preg|u match(“^http(s)”:/(www.)?facebook.com/photo.php(.*)$| i“,$url)| |$pid

因此,对于url facebookcom/nokia/photos/a.338008237396.161268.36922302396/10151987845617397/?type=1和 语法是什么

请帮忙
感谢这个简单且可读性很强的解决方案:将整个字符串用作正则表达式,围绕要匹配的内容使用
()

// $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;
}

需要反斜杠来确保
被视为文本(而不是正则表达式语法)。允许可选URL的问号。使用更多的正则表达式语法可以使匹配的“查询”更加简短和可扩展,但也使其更难阅读。

“上面的代码获取facebook id 10151987845617397并将其放入变量$pid中。”否则,请删除
可能会。脚本工作正常。我需要的是一种新的语法。如何编写新的preg_match语句,或者如果url发生更改,如何更改问题中给出的preg_match语句。我不是程序员,可能不理解。但是,我想告诉您,诺基亚url只是一个示例url。实际url将由用户发布。就像在第一个url photo.php(.*)中一样“,$url url来自$url如果用户输入的url不同且更长,是否可以更改此部分?请调查,如果我没有正确解释它谢谢你,这是很难解释给一个非程序员,但我希望它有帮助。用户现在可以提供几乎任何url,正则表达式会尝试查找匹配的“组”<代码>http://facebook.com/user3549869/movies
将不起作用,因为它需要查找“照片”相册。如果需要,可以使用附加的
()
组匹配。我希望它更清楚?谢谢你的答复。我不是一个硬核程序员,但我能理解一点代码,我可以通过谷歌搜索做出一些改变来满足我的需要。我想告诉你,用户将始终提供照片URL。im使用的脚本是硬编码的,用于处理以facebookcom/photo.php?fbid=10151987845617397开头的url,我希望用户提供facebook现在用于照片url的url,这是一个很长的url。如果可能的话,请回复。如果您愿意,我可以向您发送整个脚本/facebook php文件以供查看。谢谢你的帮助
// $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;
}