dp20011 2016-08-06 15:00
浏览 41

将字符串分成关联数组

I have a string:

$string = 'A0695/16 NOTAMN Q) EHAA/QARLT/I /NBO/E /000/999/5155N00430E073 A) EHAA B) 1605260001 C) 1608260900 EST E) REF AIP NETHERLANDS ENR 3.2 UT601 ADD TO ROUTE REMARKS: NOT AVBL FOR TRAFFIC DEP/ARR ETNG, EDDK AND ETNN DURING THE OPENING OF EHEH 0600-2300 (0500-2200). THESE FLIGHTS WILL HAVE TO REROUTE.';

I would like to split this string into an associative array.

$result['Q)'] = 'EHAA/QARLT/I /NBO/E /000/999/5155N00430E073';
$result['A)'] = 'EHAA';
$result['B)'] = '1605260001';
$result['C)'] = '1608260900 EST';

etc.

I managed to get it into an array with:

$result = preg_split("/.\)/", $string);

It gives me an array but I need the keys to be 'a)', 'b)' etc.

Can anyone help me with this?

  • 写回答

3条回答 默认 最新

  • drfm55597 2016-08-06 15:27
    关注

    The solution using preg_match_all function with specific regexp pattern(named submasks) and array_combine function(to get a respective key/value pairs):

    $string = 'A0695/16 NOTAMN Q) EHAA/QARLT/I /NBO/E /000/999/5155N00430E073 A) EHAA B) 1605260001 C) 1608260900 EST E) REF AIP NETHERLANDS ENR 3.2 UT601 ADD TO ROUTE REMARKS: NOT AVBL FOR TRAFFIC DEP/ARR ETNG, EDDK AND ETNN DURING THE OPENING OF EHEH 0600-2300 (0500-2200). THESE FLIGHTS WILL HAVE TO REROUTE.';
    
    preg_match_all("/(?<k>[A-Z]\)) (?<v>.+?)(?= [A-Z]\)|$)/", $string, $matches);
    
    // 'k'/'v' are key/value
    $result = array_combine($matches['k'], $matches['v']);
    
    print_r($result);
    

    The output:

    Array
    (
        [Q)] => EHAA/QARLT/I /NBO/E /000/999/5155N00430E073
        [A)] => EHAA
        [B)] => 1605260001
        [C)] => 1608260900 EST
        [E)] => REF AIP NETHERLANDS ENR 3.2 UT601 ADD TO ROUTE REMARKS: NOT AVBL FOR TRAFFIC DEP/ARR ETNG, EDDK AND ETNN DURING THE OPENING OF EHEH 0600-2300 (0500-2200). THESE FLIGHTS WILL HAVE TO REROUTE.
    )
    
    评论

报告相同问题?

悬赏问题

  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 个人网站被恶意大量访问,怎么办
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制