PHP在字符之前和字符之后提取字符串

时间:2013-08-03 19:37:59

标签: php

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

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

2 个答案:

答案 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正如你在第一时间提到的那样。