root@ubuntu:/srv/www/web.domain.com/public_html# ls -l | grep 'aria2'
-rw-r--r-- 1 nginx nginx 201 Aug 26 14:40 M010102.aria2
-rw-r--r-- 1 nginx nginx 1313 Aug 26 14:41 [Heido] Hamasaki.aria2
-rw-r--r-- 1 nginx nginx 125 Aug 26 14:41 [Riycou] K-Project [MP4 AAC 720p].aria2
我做了以下
ls -l | grep 'aria2'
我想在PHP上做这件事,我可能会
shell_exec("ls -l | grep 'aria2');
问题是如何将返回结果记录到php数组
M010102.aria2 [Heido] Hamasaki.aria2 [Heido] Hamasaki.aria2
谢谢!
答案 0 :(得分:4)
根据shell_exec
的官方documentation,输出是函数的返回值:
<?php
$output = shell_exec('ls -lart');
echo "<pre>$output</pre>";
?>
RichardBernards'comment是正确的。如果您希望将输出作为数组,则可以使用exec($command, &$output)
函数。请阅读official documentation以获取更多信息。
答案 1 :(得分:3)
为什么不使用PHP的glob()
?它会返回一组文件:
$files = glob('*.aria2');
这大致相当于shell命令ls *.aria2
。
顺便说一句,作为一般建议,解析ls
(例如,通过将其汇总到grep
)is frowned upon。
答案 2 :(得分:0)
您可以使用PHP命令来完成同样的事情:
<?php
$directory = getcwd();
$scanned_directory = array_diff(scandir($directory), array('..', '.'));
$result = preg_grep("/^.*\.aria2$/i",$scanned_directory);
foreach ($result as $value){
echo $value,'<br>';
}
?>
更多详情:
Checking for file-extensions in PHP with Regular expressions