Php 正则表达式表示空间,但不表示转义空间
我正在解析ls-lb的输入,并试图将每个字段放入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_
-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));