我正在处理一个包含多对数据的字符串。每对由一个;
符号分隔。=
每对包含一个数字和一个字符串,用符号分隔。
我认为这很容易处理,但我发现这对字符串的一半可以包含=
and;
符号,使得简单的拆分不可靠。
以下是有问题的字符串的示例:
123=one; two;45=three=four;6=five;
为了正确处理它,我需要将其拆分为如下所示的数组:
'123', 'one; two'
'45', 'three=four'
'6', 'five'
我处于死胡同,因此不胜感激。
更新:
感谢大家的帮助,这是我到目前为止的地方:
$input = '123=east; 456=west';
// split matches into array
preg_match_all('~(\d+)=(.*?);(?=\s*(?:\d|$))~', $input, $matches);
$newArray = array();
// extract the relevant data
for ($i = 0; $i < count($matches[2]); $i++) {
$type = $matches[2][$i];
$price = $matches[1][$i];
// add each key-value pair to the new array
$newArray[$i] = array(
'type' => "$type",
'price' => "$price"
);
}
哪个输出
Array
(
[0] => Array
(
[type] => east
[price] => 123
)
)
第二项丢失,因为它最后没有分号,我不知道如何解决这个问题。
我现在意识到这对的数字部分有时包含一个小数点,并且最后一个字符串对后面没有分号。任何提示将不胜感激,因为我运气不佳。
这是考虑到我在最初的问题中遗漏的内容的更新字符串(对不起):
12.30=one; two;45=three=four;600.00=five