PHP - 带双引号字符串的正则表达式

时间:2016-04-08 16:08:10

标签: php regex preg-match-all double-quotes

我正在尝试使用正则表达式从字符串中提取某个值:

  

“exec_hash”:“/ TPPE2ChB + 5HuSHs84FBgx5 / EgWi0OlaEXoXq4pq3Aukhc1Ypf0mZfKCJ10w =”,“events_collector”:“thiiM0ahsieSiech1phithe6chahngoo8sah6aid \ n”

我想要的数据是引号之间的哈希值。问题是字符串中有多个引号,preg_match_all函数没有返回正确的数据。我已经玩了一段时间的正则表达式,但无法弄明白。最终,我希望将这些数据返回到一个值中。例如:$string1 = '/TPPE2ChB+5HuSHs84FBgx5/EgWi0OlaEXoXq4pq3Aukhc1Ypf0mZfKCJ10w=';

更正:我正在使用curl来抓取页面内容。数据不存储在变量中。

$ matches = array(); $ thing = preg_match_all('/ hash“:”(。*?)“,”events /',$ page,$ matches);的print_r($比赛);

它吐出了一大堆不仅仅是哈希

3 个答案:

答案 0 :(得分:0)

你能使用substr吗?

没有对此进行测试,但理论上......

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

答案 1 :(得分: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"];

答案 2 :(得分:0)

感谢您的建议。

我明白了。我错过了表达式中的转义分隔符。

preg_match_all(" / exec_hash \":\"(。*?)\",/",$ page,$ matches);