Сделайте, чтобы переменная PHP была распознана

0

Я работал над раскрывающимся списком динамических рассылок php, который сканирует папку на веб-сервере и перечисляет ее содержимое, которое он работает, и слышит соответствующий выбор кода.

<?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) и значение параметра = 'распознать переменные?

Теги:

2 ответа

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

Одиночные кавычки не интерполируются. (т.е. переменные в строке не будут заменены их значениями.) Однако двойные кавычки интерполируют.

Вам нужно будет изменить '/path/$name/*' на "/path/$name/*" или использовать конкатенацию строк с помощью '/path/'. $name. '/*' '/path/'. $name. '/*' '/path/'. $name. '/*'.

Кроме того, вы должны быть осторожны с принятием управляемых пользователем ввода для $name поскольку это может привести к атаке обхода каталога.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню