php preg 匹配在 " " 内查找字符串并限制

php preg match find string inside " " with limit

这是我的文字:

pagination},queryId:"472f257a40c653c64c666ce877d59d2b", val:"598f257a40c653c64c666ce877d59d2b"

我需要找到 472f257a40c653c64c666ce877d59d2b598f257a40c653c64c666ce877d59d2b.

这些都在“”之间。我只需要“”之间的字符串,并且不超过 32。

这是我的代码:

preg_match_all('/"^(.*?){32}$"/mis', $get, $results);

正则表达式"([a-z0-9]{32})"(?<=")[a-z0-9]{32}(?=")

$text = "pagination},queryId:\"472f257a40c653c64c666ce877d59d2b\", val:\"598f257a40c653c64c666ce877d59d2b\"";

preg_match_all("/\"([a-z0-9]{32})\"/", $text, $match);
print_r($match);

输出:

Array
(
    [0] => Array
        (
            [0] => "472f257a40c653c64c666ce877d59d2b"
            [1] => "598f257a40c653c64c666ce877d59d2b"
        )

    [1] => Array
        (
            [0] => 472f257a40c653c64c666ce877d59d2b
            [1] => 598f257a40c653c64c666ce877d59d2b
        )
)

您可以使用 :"\K[a-f\d]{32}(?=")

说明

  • 匹配:"
  • 重置报告比赛的起点\K
  • 匹配从 a 到 f 和从 0 到 9 的字符 [a-f\d]{32}
  • 断言后面是“(?=")
  • 的正面前瞻

例如:

$re = '/:"\K[a-f\d]{32}(?=")/';
$str = 'pagination},queryId:"472f257a40c653c64c666ce877d59d2b", val:"598f257a40c653c64c666ce877d59d2b"';
preg_match_all($re, $str, $matches);
var_dump($matches[0]);

这将导致:

array(2) {
  [0]=>
  string(32) "472f257a40c653c64c666ce877d59d2b"
  [1]=>
  string(32) "598f257a40c653c64c666ce877d59d2b"
}

Output php example