【问题标题】:How to split array in string in square bracket (PHP)? [closed]如何在方括号(PHP)中拆分字符串中的数组? [关闭]
【发布时间】:2016-03-07 20:43:28
【问题描述】:

表单信息是这个字符串[1,1x,1x,1x][2,2x,2x,2x]这是两个行号。

这适用于 PHP 5.4+ 我有 5.2:

$str = "[1,1x,1x,1x][2,2x,2x,2x]";
$arr = [];
preg_replace_callback('/\[(.*?)\]/', function($m) use (&$arr){
    $arr[] = explode(',',preg_replace('/([\w]+)/', "[$1]", $m[1]));
}, $str);

这是输出:

Array {

  [0]=>Array {
      [0]=> "[1]" //rownumber
      [1]=> "[1x]"
      [2]=> "[1x]"
      [3]=> "[1x]"
  }
  [1]=>Array {
      [0]=> "[2]" //rownumber
      [1]=> "[2x]"
      [2]=> "[2x]"
      [3]=> "[2x]"
  }
  //etc
  [3]=>Array {
      [0]=> "[3]" //rownumber
      [1]=> "[3x]"
      [2]=> "[3x]"
      [3]=> "[3x]"
  }

}

Working demo

【问题讨论】:

  • 既然您已将问题标记为 regexexplode,我想您已经了解这些工具了。您应该发布一些代码来获得帮助,而不仅仅是转储您的规范来为您完成工作。
  • 我已经阅读了有关爆炸和正则表达式的信息。但我的见识并不多。我想我需要一个正确的正则表达式。

标签: php arrays regex string explode


【解决方案1】:

你可以简单地使用preg_replace_callback, explode like as

$str = "[1,1x,1x,1x][2,2x,2x,2x]";
$arr = [];
preg_replace_callback('/\[(.*?)\]/', function($m) use (&$arr){
    $arr[] = explode(',',preg_replace('/([\w]+)/', "[$1]", $m[1]));
}, $str);

Working Demo

【讨论】:

  • 如果你替换“$arr = [];”与 "$arr = "";"它适用于 PHP 版本 >5.3。而且我有 PHP 版本 5.2.8,所以它不起作用。谢谢你的时间。
猜你喜欢
  • 2016-11-20
  • 2019-08-26
  • 2021-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-06
  • 2023-03-05
  • 2021-04-24
相关资源
最近更新 更多