2013-10-31 98 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

感謝。

相關問題