如何将具有特殊字符的字符串转换为数组 php
How to convert string with special character as array php
我有一个像下面这样的字符串。
"|dm:12|em:.25|fm:10|wm:85|de:143|qty:1"
如何转换为键值对?
代码
foreach(array_filter(explode("|", "|dm:12|em:.25|fm:10|wm:85|de:143|qty:1")) as $ListItem){
$Item = explode(":", $ListItem);
$KVP[$Item[0]] = isset($Item[1]) ? $Item[1] : null;
}
var_dump($KVP);
输出
array(6) {
'dm' =>
string(2) "12"
'em' =>
string(3) ".25"
'fm' =>
string(2) "10"
'wm' =>
string(2) "85"
'de' =>
string(3) "143"
'qty' =>
string(1) "1"
}
嗯,我很无聊。只需将 |
替换为 &
并将 :
替换为 =
即可获取要解析为数组的查询字符串:
parse_str(str_replace(['|', ':'], ['&', '='], $string), $result);
或者您可以捕捉您想要的片段并将它们组合起来:
preg_match_all('/\|([^:]+):([^|]+)/', $string, $matches);
$result = array_combine($matches[1], $matches[2]);
- 匹配一个
|
([^:]+)
匹配并捕获任何非 :
的内容
- 匹配
:
([^|]+)
匹配并捕获任何非 |
的内容
我有一个像下面这样的字符串。
"|dm:12|em:.25|fm:10|wm:85|de:143|qty:1"
如何转换为键值对?
代码
foreach(array_filter(explode("|", "|dm:12|em:.25|fm:10|wm:85|de:143|qty:1")) as $ListItem){
$Item = explode(":", $ListItem);
$KVP[$Item[0]] = isset($Item[1]) ? $Item[1] : null;
}
var_dump($KVP);
输出
array(6) {
'dm' =>
string(2) "12"
'em' =>
string(3) ".25"
'fm' =>
string(2) "10"
'wm' =>
string(2) "85"
'de' =>
string(3) "143"
'qty' =>
string(1) "1"
}
嗯,我很无聊。只需将 |
替换为 &
并将 :
替换为 =
即可获取要解析为数组的查询字符串:
parse_str(str_replace(['|', ':'], ['&', '='], $string), $result);
或者您可以捕捉您想要的片段并将它们组合起来:
preg_match_all('/\|([^:]+):([^|]+)/', $string, $matches);
$result = array_combine($matches[1], $matches[2]);
- 匹配一个
|
([^:]+)
匹配并捕获任何非:
的内容
- 匹配
:
([^|]+)
匹配并捕获任何非|
的内容