2013-10-31 99 views
1

我试图打破在PHP中的字符串,创建字符串如下打破一个PHP字符串分为多个字符串

$users = shell_exec("ldapsearch -h ldap01 -p xxx -x -b 'dc=xxxxx,dc=com' '(cn=xxxx*)' | grep uid | grep -v xxxxx | grep -v xxxxxx | grep -v xxxxx | awk {'print $2'} | cut -d ',' -f 1 | cut -c 5-30"); 

字符串然后返回一串的名字,我想比较的东西用户在页面的另一部分输入表单。如果我打印$ users变量,我会得到名称列表,但它是一个长整型字符串,而不是单个名称。

我尝试使用strtok或爆炸,但似乎没有工作。我有以下几点。

$names = explode(" ", $users); 

但是,当我打印它只是打印字数组,它就是这样。我尝试了strtok并尝试循环访问名称,但是当我这样做时,我只能得到名字的第一个字母。如果有帮助,这些名称在打印出来时用空格分隔。林肯定我缺少一些简单的东西,但任何帮助表示赞赏。

更新:

没有这样的运气(感谢所有迄今为止的回应)。我试着再次爆炸

$users = shell_exec("ldapsearch -h ldap01 -p 389 -x -b 'dc=mlbam,dc=com' '(cn=Systems*)' | grep uid | grep -v rtfortrac | grep -v mlbnsinfo | grep -v sysweb | awk {'print $2'} | cut -d ',' -f 1 | cut -c 5-30"); 

    #$names = $users; 

    $names = explode(" ", $users); 

    print_r($names); 

当我运行这个我的输出是在一个字符串中的所有名称(x'd在这里)。我需要将这些分开,以便我可以检查用户对他们的输入。

Array ([0] => xxxx xxxxxxx xxxxxx xxxxx xxxxxx xxxxxx etc) 

如果我取消注释$ names = $ users;并获得字符串的长度则返回135

$length = strlen($names); 
+1

你可以发布''users'包含 –

+1

'in_array($ input,$ names);' – raina77ow

+1

首先分开'shell_exec()'执行和2个变量中的字符串声明,所以你应该控制字符串。现在$ users不是一个字符串。 –

回答

2

但是当我打印,它只是打印字阵列和多数民众赞成它。

它是一个阵列,以便正常echoprint将不起作用。

利用print_r($users)var_dump($users);

<?php 
$names = explode(" ", $users); 
print_r($names); 
+1

它会工作吗? $ users的返回值是'shell_exec()',它不是一个字符串。 –

+0

是怪异的,但OP说它返回一个数组。 –

1

试试这个:

<?php 

$names = explode(" ", $users); 

echo '<pre>'; 
print_r($names); 

?> 

or 

<?php 

$names = explode(" ", $users); 

var_dumb($names); 

?> 
  • 感谢
0

我要感谢大家的帮助,但我相信我解决了我的问题。当我使用preg_split像这样

$names = preg_split("/[\s,]+/", $users); 

    print_r($names); 

输出是我正在寻找的。

Array ([0] => xxxxx [1] => xxxxx [2] => xxxxx [3] => xxxx [4] => xxxxx [5] => xxxx [6] => xxxx [7] => etc) 

所以这可以认为是解决了我。我找到了解决办法后,一些额外的挖掘再次在这里所有

http://php.net/manual/en/function.preg-split.php

感谢。

相关问题