【问题标题】:how to fetch part of a string from a given string when position is not fixed in php 5.4.0 [duplicate]当位置在php 5.4.0中未固定时如何从给定字符串中获取部分字符串[重复]
【发布时间】:2018-09-17 11:54:30
【问题描述】:

我有一个仅从 Cookie 中获取 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】:

    对于您的情况,一个简单的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; 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-10
      • 1970-01-01
      • 2021-05-30
      • 2012-07-23
      • 1970-01-01
      • 2018-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多