Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式表示空间,但不表示转义空间_Php_Regex_Preg Replace_Preg Split_File Listing - Fatal编程技术网

Php 正则表达式表示空间,但不表示转义空间

Php 正则表达式表示空间,但不表示转义空间,php,regex,preg-replace,preg-split,file-listing,Php,Regex,Preg Replace,Preg Split,File Listing,我正在解析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_

我正在解析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给我每个字段用逗号或其他东西分隔的列表,那就更好了!)

尝试
(?

这是一种非常容易出错的获取文件信息的方法


为此,请使用PHP函数。

是的,鉴于您正在使用
preg
函数,您可以使用:


$filedata=preg_replace(“/(?和/或
opendir()
)对于“目录列表”,更糟糕的是,您认为,因为我在PHP中使用SSH连接到服务器,在显示用户之前在另一台服务器上运行ls,然后在PHP中解析结果……太棒了,当然我需要在拆分中使用它,而不使用+。(为了未来的读者!)我会在5分钟内接受。
$filedata = preg_replace("/(?<!\\\\)\s+/", " ", $filedata);
print_r(preg_split("/(?<!\\\\)\s/", $filedata));