我正在运行此脚本:
$output = "unrar x -y ".$number.".rar /bundle/";
echo "<pre>";
system($output);
echo "</pre>";
正在输出
提取 /var/www/html/bundle/Compressed_file_test/lgc-m.r29
0%1%2%确定
我想找出它所在的文件夹名称,在这种情况下&#34; Compressed_file_test&#34;。有没有办法可以获得这些信息?
答案 0 :(得分:3)
你可以这样做:
$command = "unrar x -y ".$number.".rar /bundle/";
$output = shell_exec($command);
$output = explode(PHP_EOL, $output);
$output = $output[0];
preg_match_all('/\/[A-Za-z0-9_]+/', $output, $matches);
echo $matches[1][count($matches[1])-2];
使用过的功能:
答案 1 :(得分:1)
您希望将信息返回到变量中吗?您添加第二个参数,但系统仅返回最后一行。 Shell?exec返回所有内容
$result = shell_exec($output);
echo $result;
如果您想要值:
$dir = stubst($output, strpos($output,"/",22), strrpos($output,"/"));
// or via regex:
preg_match('/\/(.*?) ?/', $output, $matches);
$dir = $matches[4];
// or if you know its the last:
$dir = end($matches);
这是一个简单的例子,如果你得到更复杂的结果,你将不得不改变这个(你可能想要在换行符上爆炸以获得感知线)
答案 2 :(得分:0)
如果您想在代码中使用程序输出,请考虑使用exec()而不是system()。
$command = "unrar x -y $number.rar /bundle/";
exec($command, $output, $return_var);
另外,请确保$number
不包含任何特殊字符(例如;
),或者将其转义。
答案 3 :(得分:0)
这样的事情:
$output = "unrar x -y ".$number.".rar /bundle/";
echo "<pre>";
system($output,$result);
preg_match(/\/(.*)/, $result, $path);
echo basename($path[0]);
echo "</pre>";