我在从我执行的curl的cookie中解析正确的特定字符串时遇到问题。
这是我从cookie中解析字符串的代码。
$cookies = array();
preg_match_all('/Set-Cookie:(?<cookie>\s{0,}.*)$/im', $page, $cookies);
$cookie = $cookies['cookie'];
$file = "cookie.txt";
file_put_contents($file, $cookie);
$token = explode('CSRF-TOKEN=', file_get_contents(realpath('.').'/cookie.txt'));
$tokens = trim($token[1]);
然后在我将变量$ tokens包含到我的curl post数据之前,我首先通过尝试回显测试它,如果它运行良好但是我得到了这个输出。
WHac0HdIKj7lEn7dzk8YyQAAANU;path=/;secure
我得到的输出是CSRF-TOKEN的值,但我只想得到的是WHac0HdIKj7lEn7dzk8YyQAAANU。
有没有解析这个?
我希望你明白这一点。我正尽力说英语。)
答案 0 :(得分:0)
改为使用'/Set-Cookie:(?<cookie>\w+)/im'
。
您正在使用.*
和$
匹配任何字符一直到字符串的结尾,\w
它会在最后停止匹配边界一词。
答案 1 :(得分:0)
一个快速而肮脏的解决方案(因为你已经使用了爆炸):
$tokens = trim(exlode(';path',$token[1])[0]);
但我认为应该采用更清洁,更快捷的方式(除非您出于其他原因保存cookie.txt文件)。