我正在尝试提出一个验证类,但我需要抓住选项并将它们放在'['和之前']之后的数组中。例如:
$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
作为包含(required,valid_option[options here]
)的数组......其中每个都在|
上展开,因此$rule
包含'valid_option[option,option,option]'
- 我正在尝试在那边使用<
字符串。
我认为有人回答了如何抓住选项,现在我如何抓住'valid_option'部分?我猜它是这样的:
substr($rule, 0, $pos1)
答案 0 :(得分: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'
答案 1 :(得分:0)
怎么样
$pos1 = strpos($dropdown, '[');
$pos2 = strpos($dropdown, ']');
$options = substr($dropdown, $pos1, $pos2 - $pos1);
对于方括号之前的部分substr($dropdown, 0, $pos1 - 1);
然后在|
编辑:然后在','和|上爆炸$ options正如你在第一时间提到的那样。