2010-08-15 79 views
3

我有这样如何使用正则表达式从字符串中提取值。(PHP)

\"access_token=103782364732640461|2.ZmElnDTiZlkgXbT8e34Jrw__.3600.1281891600-10000186237005083013|yD4raWxWkDe3DLPJZIRox4H6Q_k.&expires=1281891600&secret=YF5OL_fUXItLJ3dKQpQf5w__&session_key=2.ZmElnDTiZlkgXbT8e34Jrw__.3600.1281891600-10000186237005083013&sig=a2b3fdac30d53a7cca34de924dff8440&uid=10000186237005083013\" 

我想提取的UID的字符串。

+0

什么是'\“'你的字符串的开始?那是一个单引号字符内的反斜杠,或者它应该被理解为一个双引号字符串中的转义双引号? – 2010-08-15 15:44:39

+0

你可以在&? – 2010-08-16 11:18:30

回答

10

没有更多的信息很难给出最好的答案。你可以试试这个正则表达式:

'/&uid=([0-9]+)/' 

示例代码:

$s = '\"access_token=103782364732640461|2.ZmElnDTiZlkgXbT8e34Jrw__.3600.1281891600-10000186237005083013|yD4raWxWkDe3DLPJZIRox4H6Q_k.&expires=1281891600&secret=YF5OL_fUXItLJ3dKQpQf5w__&session_key=2.ZmElnDTiZlkgXbT8e34Jrw__.3600.1281891600-10000186237005083013&sig=a2b3fdac30d53a7cca34de924dff8440&uid=10000186237005083013\"'; 
$matches = array(); 
$s = preg_match('/&uid=([0-9]+)/', $s, $matches); 
print_r($matches[1]); 

结果:

10000186237005083013 

但我注意到你输入的字符串看起来像一个URL的一部分。如果是这种情况,您可能需要使用parse_str。这将正确处理一些正则表达式无法正确处理的特殊情况。

$arr = array(); 
parse_str(trim($s, '\"'), $arr); 
print_r($arr['uid']); 
+0

上使用parse_str()对其进行爆炸。 – bancer 2010-08-16 02:17:51

相关问题