2010-08-15 2 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

Что такое '\" 'в начале вашей строки? Это дословный обратный слэш внутри одной строки в кавычках, или же она должна быть понята как беглого двойные кавычки внутри двойных кавычках? –

+0

You может взорваться на & –

ответ

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

+1 для parse_str(). – bancer

Смежные вопросы