2016-04-08 8 views
0

Я пытаюсь использовать регулярные выражения для извлечения определенного значения из строки:PHP - Регулярные выражения с двойными кавычками

"exec_hash": "/ TPPE2ChB + 5HuSHs84FBgx5/EgWi0OlaEXoXq4pq3Aukhc1Ypf0mZfKCJ10w =", «events_collector ":" thiiM0ahsieSiech1phithe6chahngoo8sah6aid \ n "

Данные, которые я хочу, это хэш между кавычками. Проблема в том, что в строке есть несколько кавычек, а функция preg_match_all не возвращает правильные данные. Я некоторое время играю с регулярным выражением, но не могу понять. В конечном счете, я хотел бы, чтобы эти данные возвращались в значение. Пример: $string1 = '/TPPE2ChB+5HuSHs84FBgx5/EgWi0OlaEXoXq4pq3Aukhc1Ypf0mZfKCJ10w=';

Исправление: Я использую завиток, чтобы захватить содержимое страницы. Данные не сохраняются в переменной.

$ matches = array(); $ thing = preg_match_all ('/ hash ":" (. *?) "," Events /', $ page, $ matches); print_r (соответствует $);

Он выплевывает длинный массив гораздо больше, чем просто хэш

+0

Как насчет показывая нам свой образец регулярного выражения – Gerfried

+2

Любые изменения, которые пришли ваша строка из json-объекта? строка всегда будет в этом формате? Можете ли вы сделать что-то вроде этого: http://www.tehplayground.com/#zPm65aO2r – Tomahock

+0

$ matches = array(); $ thing = preg_match_all ('/ hash ":" (. *?) "," события/', $ page, $ matches); print_r ($ matches); Он выплескивает длинный массив гораздо больше, чем просто хэш –

ответ

0

Вы можете использовать SUBSTR?

не проверял, но в теории ...

$pos_of_comma = strpos($str, ","); 
if($pos_of_comma !== false) { 
    $execHash = substr($str, 14, $pos_of_comma - 14); 
} 
+0

Или вы также можете получить следующая позиция двойной кавычки после позиции 14, где начинается строка exec_hash. –

+0

Могу ли я использовать preg_match_all для захвата всего между _hash ":" & "," events_collector? –

0

Похоже, это json_decodable:

//Get the result from curl request: 
$curlResult = '"exec_hash": "/TPPE2ChB+5HuSHs84FBgx5/EgWi0OlaEXoXq4pq3Aukhc1Ypf0mZfKCJ10w=", "events_collector": "thiiM0ahsieSiech1phithe6chahngoo8sah6aid\n"'; 

//Parse the result: 
$parsedResult = json_decode($curlResult, true); 
//Get the hash: 
$hash = $parsedResult["exec_hash"]; 
+0

Спасибо за ваш ответ. Будет ли это работать, если хэш постоянно меняется каждые 24 часа? –

+0

Привет, очень важно проверить этот подход, чтобы убедиться в том, что возвращается curl. Если контент гарантированно декодируется с помощью 'json_decode' и что ключ' exec_hash' гарантированно будет называться так все время, тогда да, этот скрипт будет работать все время. – Sebas

0

Спасибо за предложения.

Я понял. Я пропустил разграничителей побега в выражении.

preg_match_all ("/ exec_hash \": \ "? (*) \", /», $ Странице, $ соответствует)?

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