-3

我正在尝试提出一个验证类,但我需要获取选项并将它们放入'['之后和']'之前的数组中。例如:

$dropdown = 'required|valid_option[general,recruitment,activities]';

然后我有这样的事情:

if(strops($str, '[')) {
   // this string contains options so grab them before ] and after [
}

我需要获取一般、招聘、活动,然后我知道如何使用拆分它们explode(),然后将它们放入一个数组中array_push或类似的东西,但我真的需要弄清楚如何在 [ 之后和之前 ] 以某种方式获取该字符串. 我想不通。我猜它使用preg_match某种?

任何帮助,将不胜感激。

编辑:你是对的,抱歉忘了澄清这一点。我有$rules一个包含 ( ) 的数组...每个都在so containsrequired,valid_option[options here]上爆炸-我正在尝试在那里使用该字符串。|$rule'valid_option[option,option,option]'<

我想有人回答了如何获取选项,现在我该如何获取“valid_option”部分?我猜它是这样的:

substr($rule, 0, $pos1)
4

2 回答 2

1

你可以

preg_match_all("~(.*)\[(.*?)\]~", $valid_options, $matches);

$matches将是正则表达式匹配的数组。

数组将如下所示:

array
  0 => string 'valid_option[general,test,test2,recruitment,activities]'
  1 => string 'valid_option'
  2 => string 'general,test,test2,recruitment,activities'
于 2013-08-03T19:53:06.657 回答
0

怎么样

$pos1 = strpos($dropdown, '[');
$pos2 = strpos($dropdown, ']');
$options = substr($dropdown, $pos1, $pos2 - $pos1); 

至于方括号之前的部分,将substr($dropdown, 0, $pos1 - 1);在 | 上展开

编辑:然后在 ',' 和 | 上展开 $options 正如你首先提到的。

于 2013-08-03T19:42:54.750 回答