ls -lbの入力を解析し、各フィールドをPHPの配列に入れようとしています。
私の入力は次のようになります。
-rwx------ 1 user.name users 546879 2008-09-05 09:23 Newspaper_Templates.pdf
-rwx------ 1 user.name users 403968 2009-01-12 14:16 P2_05.ppt
-rwx------ 1 user.name users 144896 2009-01-12 14:08 P2.5_Using_CRO.ppt
drwx------ 8 user.name users 4096 2009-09-15 10:21 School\ 09-10
drwx------ 2 user.name users 4096 2010-06-28 13:59 SMART\ Notebook
drwx------ 2 user.name users 4096 2009-11-30 13:35 Templates
私は一度に各行を見て、。でエスケープされているものを除いて、複数のスペースを単一のスペースに置き換えようとしています。
各行は$filedataという変数に読み込まれ、次のように処理されます。
$filedata = preg_replace("/\s+/", " ", $filedata);
print_r (preg_split("/[\s]/", $filedata));
これはほとんど機能しますが、スペースがエスケープされている行の場合、明らかに機能しません。分割がスペースに対して機能するが、エスケープされたスペースに対しては機能しないように、これを変更するにはどうすればよいですか?
(あるいは、もっと良い方法はありますか?lsに、各フィールドをコンマなどで区切ってリストを表示してもらうことができれば、それはさらに良いでしょう!)