返回shell_exec然后返回preg_match

时间:2014-04-06 15:42:15

标签: return preg-match preg-match-all shell-exec

这是一件非常奇怪的事情:

$txt = '/some/dir/some/file.txt';
$content = shell_exec('cat "'.$txt.'"');

然后:

preg_match_all("![some regex]!", $content, $matches);

但是preg_match没有返回/ false因为$ content“似乎”是空的(虽然它实际上是一个txt文件正在填充一些信息:正在进行下载的wget输出)。

奇怪的是,如果我这样做:

echo $content; exit;

它完美地显示了我的txt文件的当前内容。当我F5 /刷新时,内容被准确更新并再次打印。但是preg_match仍然无法解析它......

$content = shell_exec('cat "'.$txt.'"' 2>&1);

没有做得更好。

注意:文件路径正确,chmod正确等等......

我甚至尝试了以下内容:

$content = file_get_contents(dirname(__FILE__).'/'.$txt, true);

$ch_txt = curl_init();
curl_setopt($ch_txt, CURLOPT_URL, dirname(__FILE__).'/'.$txt);
curl_setopt($ch_txt, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch_txt, CURLOPT_FOLLOWLOCATION, 1);
$content = curl_exec($ch_txt);
curl_close($ch_txt);

同样的行为继续!

我从未见过有趣的事。

附加信息:

正则表达式是:

preg_match_all("!([0-9A-Za-z]+)([ \.]+)([0-9]+)% ([0-9\.A-Za-z]+) ([0-9a-zA-Z]+)!", $content, $matches);

文件内容如下:

323600K .......... .......... .......... .......... .......... 49%  114K 36m48s
323650K .......... .......... .......... .......... .......... 49%  249K 36m47s
323700K .......... .......... .......... .......... .......... 49%  116K 36m47s
323750K .......... .......... .......... .......... .......... 49%  242K 36m47s
323800K .......... .......... .......... .......... .......... 49%  114K 36m46s
323850K .......... .......... .......... .......... .......... 49%  237K 36m46s

输出:

system("wget '".$file_to_download."' --load-cookies=".$directory."cookie.txt --output-document='".$directory.$new_directory."/".$output."' -P ".$directory." --output-file='".$directory.$output.".txt' -b >/dev/null 2>&1");

1 个答案:

答案 0 :(得分:0)

preg_match_all("!([0-9A-Za-z]+)([ \.]+)([0-9]+)%([ ]+)([0-9\.A-Za-z]+) ([0-9a-zA-Z]+)!", $content, $matches);