ds19891231 2018-10-21 14:45
浏览 85
已采纳

基于PHP中的特定字符串创建数组

I have a problem, I would like to ask for this string:

[NAME: abc] [EMAIL: email@gm.com] [TIMEFRAME: 3 weeks] [BUDGET: 1000 dollars] [MESSAGE: bla bla bla]

Replace it with an array in the form:

array(
        'NAME'      => 'abc',
        'EMAIL'     => 'email@gm.com',
        'TIMEFRAME' => '3 weeks',
        'BUDGET'    => '1000 dollars',
        'MESSAGE'   => 'bla bla bla' );

I tried to do something like this:

$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);

I managed to pull out the "keys", but I do not know how to pull out their "values". Any ideas?

Thank you in advance for your help and I apologize for my English.

  • 写回答

1条回答 默认 最新

  • dpq755012465 2018-10-21 14:52
    关注

    You may use the following regex:

    '~\[(\w+):\s*([^][]*)]~'
    

    See the regex demo.

    Details

    • \[ - a [ char
    • (\w+) - Group 1: 1+ letters, digits or _
    • : - a colon
    • \s* - 0+whitespaces
    • ([^][]*) - Group 2: 0+ chars other than [ and ]
    • ] - a ] char.

    See the 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)
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥40 selenium访问信用中国
  • ¥15 电视大赛投票系统的c语言代码怎么做
  • ¥20 在搭建fabric网络过程中遇到“无法使用新的生命周期”的报错
  • ¥15 Python中关于代码运行报错的问题
  • ¥500 python 的API,有酬谢
  • ¥15 软件冲突问题,软件残留问题
  • ¥30 有没有人会写hLDA,有偿求写,我有一个文档,想通过hLDA得出这个文档的层次主题,有偿有偿!
  • ¥50 有没有人会写hLDA,有偿求写,我有一个文档,想通过hLDA得出这个文档的层次主题,有偿有偿!
  • ¥15 alpha101因子里哪些适合crypto?
  • ¥15 ctrl win alt 键一直触发
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部