PHP中从Cookie变量的_fbc字段提取指定数字的实现求助
嘿,我来帮你搞定这个提取数字的需求!
首先,你提到的这个场景用preg_match是最适合的——毕竟我们要找的是符合固定模式的内容,不管_fbc字段在文本的哪个位置都能精准匹配。
先看你的_fbc字段格式:[_fbc] => fb.1.1739106196727.xxxxxx,我们要抓的是fb.1.后面、下一个.前面的那串数字。直接上代码:
// 假设你已经把cookie文本存在这个变量里了 $cookieText = '09/02-13:05 : Array ( [_fbp] => fb.1.1739106196697.235924611659269905 [_fbc] => fb.1.1739106196727.IwZXh0bgNhZW0CMTAAAR3y6z47O2mW29lM1GoX2fijs4oYAehPYgcoxpSO2FiCv60XMF8MnxgSOJk_aem_KYAWfzaaJNjl06suPL6ExA [_ga] => GA1.1.765488705.1739106207 [hash] => 96f5de6147cb0fdfbbcd97e7fb074294 [user] => 51895204 )'; // 用正则匹配目标数字 preg_match('/\[\_fbc\] => fb\.1\.(\d+)\./', $cookieText, $matches); // 处理匹配结果 if (!empty($matches[1])) { $targetNumber = $matches[1]; echo "提取到的数字是:" . $targetNumber; // 输出1739106196727 } else { echo "没找到_fbc字段或者对应的数字哦"; }
我给你拆解下这个正则的逻辑,你就懂为什么这么写了:
\[\_fbc\]:匹配[_fbc],因为方括号和下划线在正则里是特殊字符,所以加反斜杠转义=> fb\.1\.:匹配固定的前缀部分,点号也是正则特殊字符,必须转义(\d+):这是核心——捕获一个或多个数字,也就是我们要的目标时间戳\.:匹配数字后面的那个点,确保我们拿到的是中间的那串数字,不会误抓到后面的内容
另外,如果你其实是直接操作PHP的$_COOKIE超全局数组(而不是这种打印出来的字符串),那更简单,先直接拿到_fbc的值再提取:
if (isset($_COOKIE['_fbc'])) { preg_match('/fb\.1\.(\d+)\./', $_COOKIE['_fbc'], $matches); if (!empty($matches[1])) { echo "提取到的数字:" . $matches[1]; } }
这个方法不管_fbc在cookie数组的哪个位置都能生效,完全不用管它是第几个元素~
内容来源于stack exchange
相关产品推荐
相关产品推荐

