社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

Casimir et Hippolyte

Casimir et Hippolyte 最近创建的主题
Casimir et Hippolyte 最近回复了
  1. 构建一个数组,将所有需要的键和值设置为null:
$columns = [
    'APPLICATION ID',
    'STATUS P=PENDING/A=ACTIVE',
    /*...*/
    'RUN CYCLE DESCRIPTION'
];

$keys = array_fill_keys($columns, null);
  1. 构建一个模式来提取字符串中的键和值。要做到这一点,在模式中放置所有需要的键是完全无用的,只需要使用捕获组(此处命名)将键与每个匹配的值隔离(注意 价值 组(可选):
$pat = '~^ \h*+ (?<key> [^:\n]* [^:\s] ) \h* : (?<value> \S+ (?:\h+\S+)* )? ~xm';
  1. 使用 preg_match_all PREG_UNMATCHED_AS_NULL 标志:当可选 价值 组不匹配,返回值为 null 而不是空字符串。
    预赛 匹配结果,用 $matches['key'] $matches['value'] 子阵列(请注意,此子阵列的键与阵列的键相同 $keys 但最终一些钥匙丢失了)。
    那么你所要做的就是合并 $keys 使用此新数组进行数组,以获取包含您感兴趣的键/值对的关联数组。
if ( preg_match_all($pat, $yourstring, $matches, PREG_UNMATCHED_AS_NULL) ) {
    $result = array_combine($matches['key'], $matches['value']);
    // $result = array_intersect_key($result, $keys); // if you need to exclude some key/value pairs from the string
    $result = array_merge($keys, $result);
}

1,2,3新鲜水3