我正在尝试建立一种无需使用Twitter的API即可获取某人的Twitter ID的工具。
在我的示例中,我的用户名是quixthe2nd。
因此,如果您在此链接中输入某人的Twitter用户名:
https://twitter.com/quixthe2nd/profile_image?size=original
它将重定向到:
https://pbs.twimg.com/profile_images/1116692743361687553/0P-dk3sF.jpg
ID为1116692743361687553
。在https://pbs.twimg.com/profile_images/
之后列出。
我的代码是:
$url = "https://twitter.com/quixthe2nd/profile_image?size=original";
function get_redirect_target($url)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$headers = curl_exec($ch);
curl_close($ch);
// Check if there's a Location: header (redirect)
if (preg_match('/^Location: (.+)$/im', $headers, $matches))
return trim($matches[1]);
// If not, there was no redirect so return the original URL
// (Alternatively change this to return false)
return $url;
}
function get_redirect_final_target($url)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // follow redirects
curl_setopt($ch, CURLOPT_AUTOREFERER, 1); // set referer on redirect
curl_exec($ch);
$target = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
curl_close($ch);
if ($target)
return $target;
return false;
}
$s = $target;
if(preg_match('/profile_images\/\K[^\/]+/',$s,$matches)) {
print($matches[0]);
}
我的代码未输出任何内容。我将如何通过PHP来抓取?
答案 0 :(得分:1)
您可以使用此正则表达式从group1获取值,
profile_images\/([^\/]+)
或者,您可以使用\K
,因此完全匹配的字符就是您想要的文本。
profile_images\/\K[^\/]+
$s = "https://pbs.twimg.com/profile_images/1116692743361687553/0P-dk3sF.jpg";
if(preg_match('/profile_images\/\K[^\/]+/',$s,$matches)) {
print($matches[0]);
} else {
echo "Didn\'t match";
}
打印
1116692743361687553