Как использовать регулярные выражения для извлечения значений из строки. (PHP) - PullRequest
4 голосов
/ 15 августа 2010

У меня есть такая строка

\"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.

1 Ответ

11 голосов
/ 15 августа 2010

Трудно дать лучший ответ без дополнительной информации. Вы можете попробовать это регулярное выражение:

'/&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']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...