如何在php 5.4.0中修复位置时如何从给定字符串中获取字符串的一部分[复制]

问题描述 投票:1回答:1

这个问题在这里已有答案:

我有一个代码,只从Cookies中获取TANID。 TANID的位置不固定。这段代码在php 7.2上工作正常但在php 5.4上没有

<pre><?php
$myfile = fopen("auth-20180925.log", "r");
$content= fgets($myfile);
$carray=explode('-,-',$content);
$mt = $carray[6];
$data=array_column( array_map(function($v) { return explode('=',trim($v));},explode(';',substr($mt,strpos($mt,'=')+1))),1,0);
$SESSION_COOKIES= ($data['TANID']);
echo $SESSION_COOKIES;
?>

但是这个代码没有在php 5.4.0上运行我检查过,发现php 5.4.0不支持array_column。有人可以建议我如何在PHP 5.4.0中实现这一点

我的“auth-20180925.log”看起来像这样:

2018/09/25 08:32:54-,-dev3.office.abc.eu.com-,-10.00.97.000-,-createAuthenticatedSession-,-00255866-,-"yoya session Created.-,-DST=R4;TANID=31d5865cd24c6c3348gjhdfjghfa79bca
2018/09/17 08:35:09-,-dev3.office.abc.eu.com-,-10.61.88.222-,-logout-,-001586284-,-"yoya session Logout.-,- (TANAUTH=6424f5a9e1b84802abe4b66abc7d8536; MultisecureUserId=00198345; authMarket=be; website=OFFICE; DST=R4; authscheme=SOFTTOKEN; TANID=81110436dfghjdfgj6a402b74; PHPSESSID=fgsfsdf5546545df; market=be)"
php php-5.4
1个回答
0
投票

对于您的情况,一个简单的foreach就足够了:

$data = array_map(function($v) { return explode('=',trim($v));},explode(';',substr($mt,strpos($mt,'=')+1)));
foreach ($data as $datum) {
    if ($datum[0] == 'TANID') {
        $SESSION_COOKIES= $datum[1];
        break;
    }
}
echo $SESSION_COOKIES; 
© www.soinside.com 2019 - 2024. All rights reserved.