在PHP中#(hash)之后获取数据

问题描述 投票:-2回答:3

示例:https://WBSITE_LINK.com/#access_token=1b6e37716abdh&state=state123&scope=profile%20booking&token_type=bearer&expires_in=15552000

在auth之后收到此链接。我如何获得access_token?

php authentication post get
3个回答
1
投票

#替换?然后你可以通过$_GET数组访问它,例如:

$token = $_GET['access_token']; // will held 1b6e37716abdh
$state = $_GET['state']; // will held state123
// and so on.

注意:如果是从表单发送,则将表单方法更改为POST,并且所有内容都将在$_POST数组中可用,并从URL隐藏。

<form method="POST" ...>

0
投票

如果链接不是您的页面,则可以使用正则表达式(并且无法使用$ _GET)。

https://regex101.com/r/zfrBSk/1

$re = '/access_token=(.*?)(&|$)/';
$str = 'https://wbsite_link.com/#access_token=1b6e37716abdh&state=state123&scope=profile%20booking&token_type=bearer&expires_in=15552000';

preg_match($re, $str, $match);

// Print the token:
Echo $match[1];

https://3v4l.org/e54GC


0
投票

另一种选择可能是使用explode并使用多个分隔符(#,&,=):

$subject = "https://WBSITE_LINK.com/#access_token=1b6e37716abdh&state=state123&scope=profile%20booking&token_type=bearer&expires_in=15552000";
$a = explode("#", $subject);
if (isset($a[1])) {
    $b = explode("&", $a[1]);
    if (isset($b[0])) {
        $c = explode("=", $b[0]);
        if (isset($c[1])) {
            echo $c[1];
        }
    }
}

Output

另一种正则表达式可能是使用\K

access_token=\K[^&\s]+

$pattern = '/access_token=\K[^&\s]+/';
$subject = "https://WBSITE_LINK.com/#access_token=1b6e37716abdh&state=state123&scope=profile%20booking&token_type=bearer&expires_in=15552000";
preg_match($pattern, $subject, $matches);
echo $matches[0];

Output

© www.soinside.com 2019 - 2024. All rights reserved.