Получить контент из URL после перенаправления - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь настроить инструмент для получения чьего-либо идентификатора Twitter без использования твиттер-API.

В моем примере мое имя пользователя - quixthe2nd.

Так что, если вы введете чье-то имя пользователя в Twitter вэта ссылка:

https://twitter.com/quixthe2nd/profile_image?size=original

Она будет перенаправлена ​​на:

https://pbs.twimg.com/profile_images/1116692743361687553/0P-dk3sF.jpg

Идентификатор 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 Ответ

1 голос
/ 06 мая 2019

Вы можете использовать это регулярное выражение и получить свое значение из группы1,

profile_images\/([^\/]+)

Regex Demo

В качестве альтернативы, вы можете использовать \K, таким образом, ваше полное совпадение - это ваш предполагаемый текст.

profile_images\/\K[^\/]+

Regex Demo с использованием \K

Демонстрационный код PHP

$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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...