根据 PHP 中的特定字符串创建数组
Create an array based on a specific string in PHP
我有问题,我想问这个字符串:
[NAME: abc] [EMAIL: email@gm.com] [TIMEFRAME: 3 weeks] [BUDGET: 1000 dollars] [MESSAGE: bla bla bla]
将其替换为以下形式的数组:
array(
'NAME' => 'abc',
'EMAIL' => 'email@gm.com',
'TIMEFRAME' => '3 weeks',
'BUDGET' => '1000 dollars',
'MESSAGE' => 'bla bla bla' );
我试过这样做:
$content = str_replace(array('[', ']'), '', '[NAME: abc] [EMAIL: email@gm.com] [TIMEFRAME: 3 weeks] [BUDGET: 1000 dollars] [MESSAGE: bla bla bla]');
preg_match_all('/[A-Z]+\:/', $content, $inputs);
我好不容易拉出了"keys",但是不知道怎么拉出他们的"values"。有什么想法吗?
预先感谢您的帮助,我为我的英语道歉。
您可以使用以下正则表达式:
'~\[(\w+):\s*([^][]*)]~'
参见regex demo。
详情
\[
- 一个 [
字符
(\w+)
- 第 1 组:1+ 个字母、数字或 _
:
- 冒号
\s*
- 0+空格
([^][]*)
- 第 2 组:[
和 ]
以外的 0+ 个字符
]
- 一个 ]
字符。
参见 PHP demo:
$s = "[NAME: abc] [EMAIL: cde] [TIMEFRAME: efg] [BUDGET: hij] [MESSAGE: klm]";
if (preg_match_all('~\[(\w+):\s*([^][]*)]~', $s, $m)) {
array_shift($m); // Removes whole match values from array
print_r(array_combine($m[0], $m[1])); // Build the result with keys (Group 1) and values (Group 2)
}
我有问题,我想问这个字符串:
[NAME: abc] [EMAIL: email@gm.com] [TIMEFRAME: 3 weeks] [BUDGET: 1000 dollars] [MESSAGE: bla bla bla]
将其替换为以下形式的数组:
array(
'NAME' => 'abc',
'EMAIL' => 'email@gm.com',
'TIMEFRAME' => '3 weeks',
'BUDGET' => '1000 dollars',
'MESSAGE' => 'bla bla bla' );
我试过这样做:
$content = str_replace(array('[', ']'), '', '[NAME: abc] [EMAIL: email@gm.com] [TIMEFRAME: 3 weeks] [BUDGET: 1000 dollars] [MESSAGE: bla bla bla]');
preg_match_all('/[A-Z]+\:/', $content, $inputs);
我好不容易拉出了"keys",但是不知道怎么拉出他们的"values"。有什么想法吗?
预先感谢您的帮助,我为我的英语道歉。
您可以使用以下正则表达式:
'~\[(\w+):\s*([^][]*)]~'
参见regex demo。
详情
\[
- 一个[
字符(\w+)
- 第 1 组:1+ 个字母、数字或_
:
- 冒号\s*
- 0+空格([^][]*)
- 第 2 组:[
和]
以外的 0+ 个字符
]
- 一个]
字符。
参见 PHP demo:
$s = "[NAME: abc] [EMAIL: cde] [TIMEFRAME: efg] [BUDGET: hij] [MESSAGE: klm]";
if (preg_match_all('~\[(\w+):\s*([^][]*)]~', $s, $m)) {
array_shift($m); // Removes whole match values from array
print_r(array_combine($m[0], $m[1])); // Build the result with keys (Group 1) and values (Group 2)
}