使PHP变量得到识别

时间:2014-11-11 16:58:50

标签: php

我一直在研究一个php动态下拉列表,该列表扫描Web服务器上的文件夹并列出其工作内容,并听到相关的代码选择。

<?php


foreach(glob(dirname(rootdir) . '/path/username/*') as $filename){
$filename = basename($filename);
echo "<option value='filepath/username/" . $filename . "'>".$filename."</option>";
}
?>

但是,如果我使用变量填充部分文件路径,则变量不会添加到路径中。

<?php
$name = "jsmith";

foreach(glob(dirname(rootdir) . '/path/$name/*') as $filename){
$filename = basename($filename);
echo "<option value='filepath/$name/" . $filename . "'>".$filename."</option>";
}
?>

$ name =“jsmith”

我正在寻找的结果是/ path / $ name / * = / path / jsmith / 和 filepath / $ name / = filepath / jsmith /

如何获取glob(dirname)和option value ='识别变量?

2 个答案:

答案 0 :(得分:3)

您需要将变量与字符串连接或将字符串换成双引号,以便解析变量。

双引号

<?php
$name = "jsmith";

foreach(glob(dirname(rootdir) . "/path/$name/*") as $filename){
$filename = basename($filename);
echo "<option value='filepath/$name/" . $filename . "'>".$filename."</option>";
}
?>

<强>级联

<?php
$name = "jsmith";

foreach(glob(dirname(rootdir) . '/path/' . $name . '/*') as $filename){
$filename = basename($filename);
echo "<option value='filepath/$name/" . $filename . "'>".$filename."</option>";
}
?>

答案 1 :(得分:1)

单引号do not interpolate。 (即字符串中的变量不会被其值替换。)但是,双引号会进行插值。

您需要将'/path/$name/*'更改为"/path/$name/*"或使用字符串连接代替'/path/' . $name . '/*'

另外,您应该小心接受$name的用户控制输入,因为它可能会导致directory traversal attack