php将字符串分成两位,PHP将分隔的字符串拆分为键/值对(关联数组)

bf9865d2c8feeff3b40f6ab2ebeb0d2a.png

幕布斯7119047

使用一个简单的正则表达式通过preg_match_all,并array_combine往往是最短,最快的选项: preg_match_all("/([^\\\\]+)\\\\([^\\\\]+)/", $string, $p); $array = array_combine($p[1], $p[2]);现在这当然是一个特例。两个键和值由一个分隔\反斜杠,因为都是对它们。由于必要的双重转义,正则表达式也有点长。但是,此方案可以推广到其他key:value,样式的字符串。独特的key:value,分隔符常见的变体包括:和=作为键/值分隔符,和/ ,或&作为对分隔符的其他变体。在这种情况下,正则表达式变得相当明显(带有/x可读性标志): #                    ↓    ↓    ↓ preg_match_all("/ ([^:]+) : ([^,]+) /x", $string, $p); $array = array_combine($p[1], $p[2]);这使得交换:和,其他分隔符变得非常容易。等号=而不是:冒号。例如,\\t作为对分隔符(制表符分隔键:值列表)经典&或;键=值对之间的分隔符。或者甚至是\\s空格或\\n换行符。允许不同的分隔符您可以通过在键/值/对之间允许不同的分隔符来使其更灵活/更宽容: #                    ↓      ↓       ↓ preg_match_all("/ ([^:=]+) [:=]+ ([^,+&]+) /x", $string, $p);两者key=value,key2:value2++key3==value3都有效。这对于更多人类友好(AKA非技术用户)来说是有意义的。约束字母数字键通常,您可能希望禁止除经典key标识符之外的任何内容。只需使用\w+单词字符串模式使正则表达式跳过不必要的出现: #                   ↓   ↓    ↓ preg_match_all("/ (\w+) = ([^,]+) /x", $string, $p);这是最琐碎的白名单方法。如果OTOH要事先断言 /约束整个键/值字符串,那么就要单独制作preg_match("/^(\w+=[^,]+(,|$))+/", …剥离空格或引用您可以通过一些trim小的添加跳过一些后处理步骤(例如在键和值上): preg_match_all("/ \s*([^=]+) \s*=\s* ([^,]+) (?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值