在函数内部使用PHP变量

时间:2014-05-17 00:55:56

标签: php

我使用以下代码仅使用应用程序的名称获取包的完整文件名:

<?php   

// define which app
$app = "appname"; 

// Search the directory for possible matches
foreach (glob("../../debs/com.dev.".$app."*") as $filename) {

preg_match('/\\d\\.\\d-\\d_.*\\.deb/', $filename, $matches);
    $debname = "com.dev.".$app."_{$matches[0]}\n"; }
    echo $debname;
?>

然后在echo中正确显示包($ debname)的文件名:com.dev.appname_1.0-1_iphoneos-arm.deb

所以我接着尝试使用这个$ debname变量来获取文件的大小:

<?php function format_size($size) {
      $sizes = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB");
      if ($size == 0) { return('n/a'); } else {
      return (round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $sizes[$i]); }
}
    echo format_size(filesize("../../debs/".$debname));
?>

由于一些奇怪的原因,代码没有显示大小,它显示n / a

如果我手动将debname变量设置为$debname = "com.dev.appname_1.0-1_iphoneos-arm.deb",它工作正常,我得到文件大小..

我无法弄清楚问题是什么

我尝试过使用SESSION ..

session_start();
$SESSION['debname'] = $debname;
...
...
echo format_size(filesize("../../debs/".$SESSION['debname']));

但同样的问题..

1 个答案:

答案 0 :(得分:1)

这一行错了:

$debname = "com.dev.".$app."_{$matches[0]}\n";
                                          ^^ new-line character

请注意,您要在字符串末尾添加换行符。如果需要,您应该删除它并使用var_dump($debname);确认正确的名称,以确保中间或末尾没有空格:

$debname = "com.dev.".$app."_{$matches[0]}";