使用PHP变量HTML嵌入视频不起作用

时间:2018-05-12 14:27:53

标签: php html css web gallery

我正在尝试使用以下代码在网页上显示所有视频,我已经能够迭代文件,打印文件名和嵌入视频。然而,视频是灰色的,不起作用,我怀疑我在代码中使用$ 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 :(得分:2)

您好

你回显$filename就像一个字符串,而不是一个PHP变量。

请记住,如果单引号'的回声全部在内部,它将像字符串一样回显,而双引号"的回声将回显读取其值的PHP变量。关于字符串的信息在PHP中有解释,例如here

您可以更改您的代码片段,将HTML视频回显到:

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

请注意,HTML video代码src属性也缺少双引号,我在上面的代码中添加了它们。

干杯

答案 1 :(得分:1)

更改

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

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

答案 2 :(得分:1)

你的php变量在single quotes内,并且(来自doc)变量和特殊字符的转义序列在单引号字符串中出现时不会被展开。

作为替代方法,您可以将字符串保留在单引号之间,并使用sprintf来返回格式化字符串,并使用例如%s来指定参数应作为字符串类型处理。

echo sprintf('<video width="400" controls="controls" preload="metadata">
<source src="%s" type="video/mp4"></video>',
    $filename);