1

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 変数を出力すると、名前のリストが表示されますが、個々の名前ではなく、すべて 1 つの長い文字列です。

strtok や expand を使用してみましたが、何も動作しないようです。私は次のものを持っています。

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

これを実行すると、1 つの文字列にすべての名前 (ここで x が表示されます) が出力されます。ユーザーの入力をそれらに対してチェックできるように、これらを分離する必要があります。

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

$names = $users; のコメントを外すと、135を返す文字列の長さを取得します

    $length = strlen($names);
4

3 に答える 3

1

これを試して:

<?php

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

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

?>

or

<?php

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

var_dumb($names);

?>
  • ありがとう
于 2013-10-31T13:37:12.110 に答える
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

ありがとうございました。

于 2013-11-02T19:18:13.430 に答える