PHP中的Oauth HTTP Authorization标头的RegEx

时间:2014-12-17 14:45:42

标签: php regex

我正在尝试在PHP中解构我的HTTP标头'Authorization',因此决定使用RegEx,但是(我很新,请原谅我)它只返回第一个匹配而不是所有匹配。

这是我的RegEx:

(oauth_\w+)=([^"]+),?

这是一个测试字符串:

oauth_nonce=AB00E4270DF844E1882E25D19905350A,oauth_version=1.0,oauth_timestamp=1418827216.70618,oauth_signature=UpUl8GDANYML+xivYEdWZjO1U6A=,oauth_consumer_key=publica5d53e674542272aefc2ea8ebf99bf9d771ed2b089bdfd1fbb74b5de69,oauth_signature_method=HMAC-SHA1

PHP代码:

preg_match_all('/(oauth_\w+)=([^"]+),?/', getallheaders()['Authorization'], $authorization_values, PREG_PATTERN_ORDER);

这是PHP方法输出的内容

[0] => Array
    (
        [0] => oauth_nonce=AB00E4270DF844E1882E25D19905350A,oauth_version=1.0,oauth_timestamp=1418827216.70618,oauth_signature=UpUl8GDANYML+xivYEdWZjO1U6A=,oauth_consumer_key=publica5d53e674542272aefc2ea8ebf99bf9d771ed2b089bdfd1fbb74b5de69,oauth_signature_method=HMAC-SHA1
    )

[1] => Array
    (
        [0] => oauth_nonce
    )

[2] => Array
    (
        [0] => AB00E4270DF844E1882E25D19905350A,oauth_version=1.0,oauth_timestamp=1418827216.70618,oauth_signature=UpUl8GDANYML+xivYEdWZjO1U6A=,oauth_consumer_key=publica5d53e674542272aefc2ea8ebf99bf9d771ed2b089bdfd1fbb74b5de69,oauth_signature_method=HMAC-SHA1
    )

1 个答案:

答案 0 :(得分:0)

(oauth_\w+)=([^",]+),?

试试这个。看看演示。

https://regex101.com/r/eZ0yP4/39