想要从 CURL PHP 中的此文本获取 CSRF 令牌

Want to get the CSRF Token from this text in CURL PHP

我正在尝试从原始文本中获取 CSRF 令牌,基本上,我在 PAGE 上有很多文本数据,我在该页面上几乎有 5-10 个 CSRF 令牌都是相同的,我只是想从文本中获取一个 csrf 令牌并保存到 PHP 变量中。

<?php

$url = "--";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$result = curl_exec($ch);
preg_match_all('/^x-csrf-token:\s*([^;]*)/mi', $result, $matches);
$cookies = array();
foreach($matches[1] as $item) {
    parse_str($item, $cookie);
    $cookies = array_merge($cookies, $cookie);      
 
}   
$session = $cookies['x-csrf-token'];
echo($session);


?>

这是代码,但它不起作用。

文本屏幕:

您的 regex 似乎与您的示例文本无关。

具体来说:

  • ^ 字符匹配文本的开头,而您的匹配项在文本中。所以这需要删除
  • 您遗漏了原文中的引号 '
  • 你正在匹配[^;]*这意味着当你找到一个分号时中断,但你的文本中没有分号

根据您分享的示例文本,正则表达式应该是

/x-csrf-token',\s*'([^']+)/mi

3v4l 示例:https://3v4l.org/WjKhb