3

PHPでテキストの下を解析して表示し、hmtlで出力する方法は?

必要なのは、列を区切るスペースにアプローチする方法のヒントです。スペースの数は固定されていないため、使用できませんexplode(" ",$string);。また、以下の出力の構造が実際に幅の列を固定しているかどうかもわかりません。解析関数をジェネリックにしたい。

出力はdb2 list applications

Auth Id  Application    Appl.      Application Id                                                 DB       # of
         Name           Handle                                                                    Name    Agents
-------- -------------- ---------- -------------------------------------------------------------- -------- -----
DB2INST1 db2jcc_applica 11446      10.0.0.209.51406.120606004531                                  WEI      1    
DB2INST1 db2jcc_applica 11448      10.0.0.209.51407.120606004536                                  WEI      1    
DB2INST1 db2jcc_applica 13762      10.0.0.206.57473.120606024909                                  DOM_BUGS 1    
ADMIN    db2jcc_applica 15220      10.0.0.210.52248.120606045402                                  RATIONAL 1    
DB2INST1 php-fpm: pool  16546      127.0.0.2.35530.120606065726                                   KON      1    
DB2INST1 db2jcc_applica 16547      10.0.0.202.52042.120606065813                                  KON      1 
4

4 に答える 4

2

スペースでpreg_splitできます

$words = preg_split("/[\s]+/", $input);

//if your lines seperated by `\n` new line you could:
$inputArr = preg_split("/\R+/", $input);
foreach($inputArr as $value) {
   $out = preg_split("/\s+/", $value);
   var_dump($out);
}

Thanks
于 2012-06-06T07:13:05.527 に答える
1

preg_match各データ行で次のように使用できます。

preg_match('~^(\S+)\s+(\S+)\s+(\S+)\s+(\S+)$~', $line, &$matches);

1これは、一致した場合、一致しなかった場合に返さ0れます。$matchesさらに重要なのは、次のようなの列の内容です。

array (
  0 => 'DB2INST1 db2jcc_applica 11446      10.0.0.209.51406.120606004531',
  1 => 'DB2INST1',
  2 => 'db2jcc_applica',
  3 => '11446',
  4 => '10.0.0.209.51406.120606004531',
)

このパターンは、空白のシーケンスで区切られた非空白のシーケンスに単純に一致します。したがって、データ自体の一部として空白がない限り、これはランダムな列の長さで機能するはずです。

于 2012-06-06T07:11:16.270 に答える