Rumah > pembangunan bahagian belakang > tutorial php > preg_match_all - php正则表达式问题

preg_match_all - php正则表达式问题

WBOY
Lepaskan: 2016-06-06 20:33:42
asal
1019 orang telah melayarinya

如何匹配

<code>$rs='callback( {"client_id":"101223150","openid":"9ECFD84190F7D5D40E013CF84D0979FF"} );';
</code>
Salin selepas log masuk
Salin selepas log masuk

中openid的9ECFD84190F7D5D40E013CF84D0979FF?

回复内容:

如何匹配

<code>$rs='callback( {"client_id":"101223150","openid":"9ECFD84190F7D5D40E013CF84D0979FF"} );';
</code>
Salin selepas log masuk
Salin selepas log masuk

中openid的9ECFD84190F7D5D40E013CF84D0979FF?

可以使用正则前瞻

举个例子,需要匹配 <p>Hello world</p> 中的 Hello world,正则表达式可以这么写:(?)(.*)(?=

)

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

<code class="php"><?php $rs='callback( {"client_id":"101223150","openid":"9ECFD84190F7D5D40E013CF84D0979FF"} );';
$pattern = '/(?<=openid":")(.*)(?=")/';
preg_match($pattern, $rs, $matches);
print_r($matches);</code></code>
Salin selepas log masuk

输出:

<code class="console">Array
(
    [0] => 9ECFD84190F7D5D40E013CF84D0979FF
    [1] => 9ECFD84190F7D5D40E013CF84D0979FF
)</code>
Salin selepas log masuk

<code>php</code><code>preg_match_all('@callback\((.*)\);@', $rs,$matches );
$arr = json_decode($matches[1][0],true);
print_r($arr['openid']);//9ECFD84190F7D5D40E013CF84D0979FF
</code>
Salin selepas log masuk

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

<code>php</code><code>$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访问你需要的数据
</code>
Salin selepas log masuk

输出

<code>Array
(
    [0] => callback( {"client_id":"101223150","openid":"9ECFD84190F7D5D40E013CF84D0979FF"} );
    [1] =>  {"client_id":"101223150","openid":"9ECFD84190F7D5D40E013CF84D0979FF"}
)
stdClass Object
(
    [client_id] => 101223150
    [openid] => 9ECFD84190F7D5D40E013CF84D0979FF
)
</code>
Salin selepas log masuk

代码如下:

<code>php</code><code>$rs='callback( {"client_id":"101223150","openid":"9ECFD84190F7D5D40E013CF84D0979FF"} );';
$preg = '/openid["|\']:["|\'](\w+)/i';
preg_match($preg,$rs,$result);
echo $result[1];//9ECFD84190F7D5D40E013CF84D0979FF
</code>
Salin selepas log masuk
Label berkaitan:
php
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan