PHP正则表达式匹配问题

PHP正则表达式匹配问题,php,regex,Php,Regex,我有一些字符串格式的数据键:值键:值键:值等 我正在尝试使用正则表达式匹配将其转换为数组。键都是大写字母,后跟冒号。然后有一个空格,值开始。这之后是一个空格,然后是下一个键。该值可以包含大小写字母、数字、空格、逗号或等号 例如,我想要以下输入字符串: NAME: Name of Item COLOR: green SIZE: 40 已转换为此阵列: newArray[NAME] = Name of Item newArray[COLOR] = green newArray[SIZE] = 40

我有一些字符串格式的数据键:值键:值键:值等

我正在尝试使用正则表达式匹配将其转换为数组。键都是大写字母,后跟冒号。然后有一个空格,值开始。这之后是一个空格,然后是下一个键。该值可以包含大小写字母、数字、空格、逗号或等号

例如,我想要以下输入字符串:

NAME: Name of Item COLOR: green SIZE: 40
已转换为此阵列:

newArray[NAME] = Name of Item
newArray[COLOR] = green
newArray[SIZE] = 40
非常感谢您的帮助。此外,我无法访问输入的格式,否则我会让自己更轻松。

通用解决方案:

$str = 'NAME: Name of Item COLOR: green SIZE: 40';

$split = preg_split('/([A-Z]+):/', $str, -1,
            PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);

echo 'Split Array is: ' . var_export($split, true);

$newArray = array();

// Stick the key and value together (processing two entries at a time.
for ($i = 0; $i < count($split) - 1; $i = $i + 2)
{
   $newArray[$split[$i]] = trim($split[$i + 1]); // Probably trim them.
}

echo 'New Array is: ' . var_export($newArray, true);
$str='NAME:NAME of Item COLOR:green SIZE:40';
$split=preg_split('/([A-Z]+):/',$str,-1,
PREG_SPLIT_DELIM_CAPTURE(PREG_SPLIT_NO_EMPTY);
echo“拆分数组为:”。var_导出($split,true);
$newArray=array();
//将键和值粘在一起(一次处理两个条目)。
对于($i=0;$i<计数($split)-1;$i=$i+2)
{
$newArray[$split[$i]]=trim($split[$i+1]);//可能会修剪它们。
}
echo“新数组为:”.var_export($newArray,true);
我建议

$str = "NAME: Name of Item COLOR: green SIZE: 40";

preg_match_all('~([A-Z]+):(.+?)(?=[A-Z]+:|$)~', $str, $m, PREG_SET_ORDER);
foreach($m as $e)
    $result[$e[1]] = trim($e[2]);

print_r($result);

非常有魅力。感谢您的帮助。Paul的答案对我的数据集更有效,但感谢您的帮助。如果以下答案之一解决了您的问题,请单击答案旁边的勾号接受