在PHP中使用数组修改的正则表达式

时间:2014-05-19 09:39:23

标签: php regex

这是我的数组

Array (

    [0] => administrators (Members can fully administer the computer/domain)
    [1] =>  SID: S-1-5-32-544
    [2] =>  No members
    [3] => backup operators (Members can bypass file security to back up files)
    [4] =>  SID: S-1-5-32-551
    [5] =>  No members
    [6] => power users (Members can share directories)
    [7] =>  SID: S-1-5-32-547
    [8] =>  No members
    [9] => john (qwerty)
    [10] =>     SID: S-1-5-21-418404614-1514096366-3962945920-2147483748
    [11] =>     Members:
    [12] =>         \vijay
    [13] => bishop (abcd)
    [14] =>     SID: S-1-5-21-418404614-1514096366-3962945920-2147483748
    [15] =>     Members:
    [16] =>         \ram
    [17] =>         \vijay
)

现在我想使用php中的任何preg函数从名为vijay的数组中搜索 它会在这个数组中搜索vijay,但我的问题是我需要搜索vijay,我想要输出就像vijay在哪里我需要在一个数组中的组名,如下所示 vijay在group1和group2中可用(array [9] nd array [13]) 所以我需要使用正则表达式输出如下所示

Array (

     [0] => john
     [1] => bishop
)
提前thnku,如果你没有得到任何问题PLZ评论我会清除你

2 个答案:

答案 0 :(得分:1)

要做到这一点:

foreach ($your_array as $item){
  if (strpos($item, 'group') !== FALSE){
     echo $item;
  }
  if (strpos($item, 'vijay' !== FALSE){
     echo $item;
  }
}

这里是一个简单的解决方案,我现在无法测试它,但这是一个关于preg_match的想法,如果你想将结果发送到一个数组以便稍后在你的代码中操作,你可以使用它,< / p>

否则,如果您只需要以快速而肮脏的方式显示,则可以使用strpos,它将给出字符串中子字符串的位置(上例中的项目)

希望这会对你有所帮助,

PS:这只是一个例子,有多种方法可以获得它,这是最简单的方法之一......

编辑:

所以在这种情况下:

$groupName = "";
foreach ($your_array as $item){
  if (strpos($item, '(') !== FALSE && strpos($item, ')') !== FALSE){
     $groupName = $item;
  }
  if (strpos($item, 'vijay' !== FALSE){
     echo "This user '$item' belongs to the group '$groupName'";
     //Normally this structure keeps the same you don't need the next line:
     $groupName = ""; //optional
  }
}

此致

答案 1 :(得分:0)

我认为最简单的方法是在数组上创建一个foreach,然后在每个索引上使用函数pref_match:

文档:http://www.php.net/manual/fr/function.preg-match.php

希望这对你有帮助,

亲切的问候,

编辑:我也找到了这个可以帮助您的链接:How to search in an array with preg_match?