我一直在研究一个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 ='识别变量?
答案 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。