欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

preg_match_all - php正则表达式问题

程序员文章站 2022-05-04 08:33:21
...
如何匹配
$rs='callback( {"client_id":"101223150","openid":"9ECFD84190F7D5D40E013CF84D0979FF"} );';

中openid的9ECFD84190F7D5D40E013CF84D0979FF?

回复内容:

如何匹配

$rs='callback( {"client_id":"101223150","openid":"9ECFD84190F7D5D40E013CF84D0979FF"} );';

中openid的9ECFD84190F7D5D40E013CF84D0979FF?

可以使用正则前瞻

举个例子,需要匹配

Hello world

中的 Hello world,正则表达式可以这么写:(?)(.*)(?=

)

所以获取 openid 的值可以这样:

输出:

Array
(
    [0] => 9ECFD84190F7D5D40E013CF84D0979FF
    [1] => 9ECFD84190F7D5D40E013CF84D0979FF
)

phppreg_match_all('@callback\((.*)\);@', $rs,$matches );
$arr = json_decode($matches[1][0],true);
print_r($arr['openid']);//9ECFD84190F7D5D40E013CF84D0979FF

这是一个标准的jsonp格式(json参数+回调函数),一个简单的处理方案是拿出函数callback()取它的参数部分然后作为json解析:

php$rs = 'callback( {"client_id":"101223150","openid":"9ECFD84190F7D5D40E013CF84D0979FF"} );';
$jsonp = [];
preg_match('/callback\((.+)\);/', $rs, $jsonp);
print_r($jsonp);
$result = json_decode($jsonp[1]);
print_r($result); //使用$result->openid访问你需要的数据

输出

Array
(
    [0] => callback( {"client_id":"101223150","openid":"9ECFD84190F7D5D40E013CF84D0979FF"} );
    [1] =>  {"client_id":"101223150","openid":"9ECFD84190F7D5D40E013CF84D0979FF"}
)
stdClass Object
(
    [client_id] => 101223150
    [openid] => 9ECFD84190F7D5D40E013CF84D0979FF
)

代码如下:

php$rs='callback( {"client_id":"101223150","openid":"9ECFD84190F7D5D40E013CF84D0979FF"} );';
$preg = '/openid["|\']:["|\'](\w+)/i';
preg_match($preg,$rs,$result);
echo $result[1];//9ECFD84190F7D5D40E013CF84D0979FF
相关标签: php preg_match_all