首页 > 解决方案 > 如何将 TxtNation 字符串转换为数组?

问题描述

我想将此字符串转换为数组:

id:5918351498722606 sub:001 dlvrd:001 submit date:1410311037 done date:1410311038 
stat:DELIVRD err:000 text:New HTTP Test TxtN

在这种情况下,使用类似的东西explode(" ", $string)无效。因为它可能text很长。

标签: phparrays

解决方案


使用preg_match_all()字符串提取段:字符串(最多空白)将允许您捕获诸如submit date:1410311037. 唯一的问题是最后的文本可能有空格。因此,为了解决这个问题,它专门提取了结束文本。

$string = 'id:5918351498722606 sub:001 dlvrd:001 submit date:1410311037 done date:1410311038 
stat:DELIVRD err:000 text:New HTTP Test TxtN';

preg_match_all("/(.*?):(.*?)\s/", $string, $matches);
$matches[2][count($matches[2])-1] =  trim(strrchr($string, ":"), ":");
$out = array_combine($matches[1], $matches[2]);
print_r($out);

输出...

Array
(
    [id] => 5918351498722606
    [sub] => 001
    [dlvrd] => 001
    [submit date] => 1410311037
    [done date] => 1410311038
    [stat] => DELIVRD
    [err] => 000
    [text] => New HTTP Test TxtN
)

推荐阅读