重定向后从URL获取内容

时间:2019-05-06 10:17:36

标签: php regex twitter

我正在尝试建立一种无需使用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来抓取?

1 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式从group1获取值,

profile_images\/([^\/]+)

Regex Demo

或者,您可以使用\K,因此完全匹配的字符就是您想要的文本。

profile_images\/\K[^\/]+

Regex Demo using \K

PHP Code Demo

$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