HTML встраивание видео с использованием PHP-переменной не работает - PullRequest
0 голосов
/ 12 мая 2018

Я пытаюсь отобразить все видео на веб-странице, используя следующий код. Я получил возможность перебирать файлы, печатать имена файлов и встраивать видео.Однако видео отображаются серым цветом и не работают, я подозреваю, что что-то не так с использованием $ filename в коде.

<?php
$dir = new DirectoryIterator(dirname(__FILE__));
foreach ($dir as $filename) {
    if (!$filename->isDot()) {

        if ($filename != "index.php" and $filename != "error_log") {

            echo $filename, "<br>"; 

            echo '<video width="400" controls="controls" preload="metadata">
            <source src=$filename type="video/mp4"></video>';

            echo "<br><br>";
        }

    }
}
?>

Вот как это выглядит:

enter image description here

enter image description here

Ответы [ 3 ]

0 голосов
/ 12 мая 2018

Привет

Вы эхо $filename как строка, а не переменная PHP.

Помните, что если эхо с одинарными кавычками ' все внутри него будет отображаться как строка, а эхо с двойными кавычками " будет отображать переменные PHP, читающие их значение. Информация о строках в PHP объясняется просто, напр. здесь .

Вы можете изменить свой фрагмент кода с эхо HTML-видео на:

echo '<video width="400" controls="controls" preload="metadata"><source src="' . $filename . '" type="video/mp4"></video>';

Обратите внимание, что для свойства HTML video tag src также отсутствовали двойные кавычки, и я добавил их в коде выше.

Приветствия

0 голосов
/ 12 мая 2018

Ваша переменная php находится внутри одинарных кавычек , и (из документа) переменные и escape-последовательности для специальных символов не будут раскрыты, если они встречаются в одинарных строках в кавычках.

В качестве альтернативы вы можете хранить строку между одинарными кавычками и использовать sprintf , которая будет возвращать форматированную строку и использовать, например, %s, чтобы указать, что аргумент должен обрабатываться кактип строки.

echo sprintf('<video width="400" controls="controls" preload="metadata">
<source src="%s" type="video/mp4"></video>',
    $filename);
0 голосов
/ 12 мая 2018

Изменить

<source src=$filename type="video/mp4"></video>';

на

<source src="'.$filename.'" type="video/mp4"></video>';
...